如何并行运行多个子进程并等待它们在Python中完成

时间:2015-06-06 18:36:04

标签: python multiprocessing

我正在尝试将bash脚本迁移到Python。

bash脚本并行运行多个OS命令,然后在恢复之前等待它们完成,即:

  

command1&

     

command2&

     

     

commandn&

     

等待

     

命令

我想使用Python子进程实现相同的功能。这可能吗?如何在恢复之前等待subprocess.call命令完成?

1 个答案:

答案 0 :(得分:7)

您仍然可以使用与Popen采用相同输入参数的subprocess.call,但更灵活。

  

subprocess.call:完整的函数签名与Popen构造函数的签名相同 - 这个函数将所有提供的参数直接传递给该接口。

一个区别是subprocess.call阻止并等待子流程完成(它建立在Popen之上),而Popen不阻止并因此允许你并行启动其他流程。

尝试以下方法:

from subprocess import Popen
commands = ['command1', 'command2']
procs = [ Popen(i) for i in command ]
for p in procs:
   p.wait()