等待进程,直到所有subprocess完成?
我有一个创build两个或多个subprocess的主进程,我希望主进程等到所有subprocess完成其操作并退出?
# main_script.py p1 = subprocess.Popen(['python script1.py']) p2 = subprocess.Popen(['python script2.py']) ... #wait main process until both p1, p2 finish ...
一个.wait()
对象有一个.wait()
方法被完全定义为:等待一个给定的子.wait()
的完成(并且除了重新调用它的退出状态外)。
如果你使用这个方法,你可以防止僵尸进程太久。
(或者,你可以使用subprocess.call()
或者subprocess.check_call()
来调用和等待,如果你不需要IO进程,那可能就足够了,但是这可能不是一个选项,因为如果两个子check_
似乎应该并行运行,他们不会用( check_
) call()
。)
如果你有几个subprocess等待,你可以做
exit_codes = [p.wait() for p in p1, p2]
只要所有的subprocess完成就返回。 然后你可以得到一个你可以评估的返回代码列表。
subprocess.call
自动等待,也可以使用:
p1.wait()