这个问题已经在这里有一个答案:
- Windows上的Python -如何等待多个子进程? 5个回答
- subprocess.wait()不等待POPEN过程完成(使用线程时)? 4个回答
我有一个创建了两个以上的子进程的主处理,我想主要工艺等到所有子流程完成他们的运营和退出?
# main_script.py
p1 = subprocess.Popen(['python script1.py'])
p2 = subprocess.Popen(['python script2.py'])
...
#wait main process until both p1, p2 finish
...
一个Popen
对象有一个.wait()
这个精确定义的方法:等待一个给定的子进程的完成(和,此外,对于重新调整它的退出状态)。
如果你使用这种方法,你会阻止该进程僵尸躺在身边太久。
(或者,您也可以使用subprocess.call()
或subprocess.check_call()
调用和等待。如果你不需要IO与过程,这可能是不够的。但可能这是不是一种选择,因为你如果2子过程似乎应该并行运行,他们将不会与( check_
) call()
。)
如果你有几个子过程等待,你可以做
exit_codes = [p.wait() for p in p1, p2]
其中当所有的子进程已经完成返回。 那么你有,你也许可以评估返回代码的列表。