我有一个python脚本可以完成一些工作。我使用multiprocessing.Pool
让一些工人为我做一些命令。
我的问题是当我尝试终止脚本时。当我按 Ctrl-C 时,我想,每个工作人员都会立即清理它的实验(这是一些自定义代码,实际上甚至是一个子进程命令,而不仅仅是释放锁或内存)并停止。
我知道我可以使用信号处理程序捕获 Ctrl-C 。如何使multiprocessing.Pool
的所有当前正在运行的工作程序终止,仍在执行清理命令?
Pool.terminate()
没有用,因为这些流程将在不清理的情况下终止。
答案 0 :(得分:2)
如何尝试atexit标准模块?
它允许您注册将在终止时执行的功能。
答案 1 :(得分:0)
你在使用Unix吗?如果是,为什么不在子流程中捕获SIGTERM?实际上,Process.terminate()
的文档是:
Terminate the process. On Unix this is done using the SIGTERM signal
(我没有测试过这个。)