我正在使用多处理模块在我的程序中进行并行处理。当我测试它时,我经常想在发现错误时尽早杀死该程序,因为它需要一段时间才能完成。在我的Linux环境中,我从终端运行我的程序,并使用Ctrl + C来终止它。使用多处理,这会导致所有进程被终止,但是我从来没有得到bash提示符,并且必须关闭终端并打开一个新终端(并导航回我的工作目录),这非常烦人。有没有办法解决这个问题?
答案 0 :(得分:23)
按Ctrl-Z暂停Python进程,然后执行kill %1
以终止它。您也可以按Ctrl- \(反斜杠),但这可能会导致进程留下核心文件。
答案 1 :(得分:2)
但是等等......是不是有办法处理KeyboardException事件来杀死池中的进程?
我试过了:
except KeyboardInterrupt as e: # Ctrl-C
print("Killing all the children in the pool.")
pool.close()
pool.terminate()
return 1
# raise e
但它似乎不起作用。
答案 2 :(得分:0)
您可以使用屏幕启动该过程,然后在需要时终止屏幕会话。它不会取出整个bash终端。有关良好的屏幕教程,请参阅: