进程关闭时禁用“加入”

时间:2010-02-18 16:06:39

标签: python multiprocessing fail-fast

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

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

我希望我发送SIGTERM的进程尽快退出(即“快速失败”),而不是等待几秒钟才最终放弃join尝试。< / p>

澄清:我有一个“核心流程”,可以创建一堆“子流程”。我正在寻找一种方法来干净地处理来自任何进程的“SIGTERM”信号,以便关闭整个进程树。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

终止a_thread会触发break子句。

答案 2 :(得分:0)

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

Process.daemon

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

请注意,不允许守护进程创建子进程。否则,守护进程会在子进程退出时终止其子进程。另外,这些不是Unix守护进程或服务,如果非dameonic进程退出,它们将被终止(并且不被连接)的正常进程。