使用多进程终止程序
我在我的程序中使用了多进程模块来进行并行处理。在测试的时候,如果我发现了bug,通常会想早点结束程序,因为运行到完成需要一些时间。在我的Linux环境中,我是通过终端来运行程序的,使用Ctrl+C来结束它。可是,使用多进程时,这样会导致所有的进程都被杀掉,但我却没有办法重新得到bash提示符,只能关闭终端再打开一个(还得重新导航到我的工作目录),这真让人烦。有没有什么办法可以解决这个问题呢?
3 个回答
0
你可以使用screen来启动一个进程,然后在需要的时候结束这个screen会话。这样做不会影响整个bash终端。想要了解更多关于screen的使用,可以参考这个教程:
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-\(反斜杠),但这样可能会导致程序留下一个核心文件。