使用多进程终止程序

12 投票
3 回答
5865 浏览
提问于 2025-04-16 03:58

我在我的程序中使用了多进程模块来进行并行处理。在测试的时候,如果我发现了bug,通常会想早点结束程序,因为运行到完成需要一些时间。在我的Linux环境中,我是通过终端来运行程序的,使用Ctrl+C来结束它。可是,使用多进程时,这样会导致所有的进程都被杀掉,但我却没有办法重新得到bash提示符,只能关闭终端再打开一个(还得重新导航到我的工作目录),这真让人烦。有没有什么办法可以解决这个问题呢?

3 个回答

0

你可以使用screen来启动一个进程,然后在需要的时候结束这个screen会话。这样做不会影响整个bash终端。想要了解更多关于screen的使用,可以参考这个教程:

http://www.kuro5hin.org/story/2004/3/9/16838/14935

3

等等……难道没有办法处理KeyboardException事件来结束池中的进程吗?

我试过:

except KeyboardInterrupt as e: # Ctrl-C
    print("Killing all the children in the pool.")
    pool.close()
    pool.terminate()
    return 1
    # raise e

但好像不太管用。

23

按下 Ctrl-Z 可以暂停正在运行的 Python 程序,然后输入 kill %1 来结束它。你也可以直接按 Ctrl-\(反斜杠),但这样可能会导致程序留下一个核心文件。

撰写回答