等待进程,直到所有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()