2

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

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

我知道我可以Ctrl-C用信号处理程序捕捉到。我怎样才能让所有当前正在运行的工作人员multiprocessing.Pool终止,仍然在执行他们的清理命令?

Pool.terminate()不会有用,因为进程将在不清理的情况下终止。

4

2 回答 2

2

试试atexit标准模块怎么样?

它允许您注册将在终止时执行的函数。

于 2010-06-22T08:17:54.637 回答
0

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

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

(我没有测试过这个。)

于 2010-06-22T14:48:14.437 回答