如何在终止Python脚本时运行清理

时间:2010-06-22 06:11:23

标签: python multiprocessing terminate

我有一个python脚本可以完成一些工作。我使用multiprocessing.Pool让一些工人为我做一些命令。

我的问题是当我尝试终止脚本时。当我按 Ctrl-C 时,我想,每个工作人员都会立即清理它的实验(这是一些自定义代码,实际上甚至是一个子进程命令,而不仅仅是释放锁或内存)并停止。

我知道我可以使用信号处理程序捕获 Ctrl-C 。如何使multiprocessing.Pool的所有当前正在运行的工作程序终止,仍在执行清理命令?

Pool.terminate()没有用,因为这些流程将在不清理的情况下终止。

2 个答案:

答案 0 :(得分:2)

如何尝试atexit标准模块?

它允许您注册将在终止时执行的功能。

答案 1 :(得分:0)

你在使用Unix吗?如果是,为什么不在子流程中捕获SIGTERM?实际上,Process.terminate()的文档是:

Terminate the process. On Unix this is done using the SIGTERM signal

(我没有测试过这个。)