我有一个创建两个或多个子进程的主进程,我希望主进程等到所有子进程完成操作并退出?
# main_script.py
p1 = subprocess.Popen(['python script1.py'])
p2 = subprocess.Popen(['python script2.py'])
...
#wait main process until both p1, p2 finish
...
我有一个创建两个或多个子进程的主进程,我希望主进程等到所有子进程完成操作并退出?
# 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()
orsubprocess.check_call()
来调用和等待。如果您不需要进程的 IO,那可能就足够了。但这可能不是一个选项,因为您的 if 两个子进程似乎应该并行运行, 他们不会用 ( call()
/ check_call()
.)
如果您有几个子流程要等待,您可以这样做
exit_codes = [p.wait() for p in p1, p2]
它会在所有子流程完成后立即返回。然后,您有一个返回代码列表,您可能可以对其进行评估。
subprocess.call
自动等待,你也可以使用:
p1.wait()