1

有没有办法阻止multiprocessingPython 模块尝试调用并等待join()父进程的子进程关闭?

2010-02-18 10:58:34,750 INFO calling join() for process procRx1

我希望我向其发送 a 的进程尽快SIGTERM退出(即“快速失败”),而不是在最终放弃join尝试之前等待几秒钟。

澄清:我有一个“中央进程”,它创建了一堆“子进程”。我正在寻找一种方法来干净地处理来自任何进程的“SIGTERM”信号,以降低整个进程树。

4

3 回答 3

0

您是否尝试过明确使用Process.terminate

于 2010-02-18T21:01:30.413 回答
0

您可以尝试加入一个超时(1 秒?)的循环并检查线程是否还活着,例如:

while True:
  a_thread.join(1)
  if not a_thread.isAlive(): break

终止a_thread将触发break子句。

于 2010-02-18T22:58:25.980 回答
0

听起来像设置你的子进程的标志Process.daemon = False可能是你想要的:

进程守护进程

进程的守护进程标志,一个布尔值。这必须在调用 start() 之前设置。
初始值是从创建过程中继承的。
当一个进程退出时,它会尝试终止其所有的守护子进程。

请注意,不允许守护进程创建子进程。否则,如果守护进程在其父进程退出时被终止,它将使其子进程成为孤儿。此外,这些不是 Unix 守护进程或服务,它们是正常进程,如果非 dameonic 进程退出,它们将被终止(而不是加入)。

于 2010-02-19T18:02:06.653 回答