我正在尝试将bash脚本迁移到Python。
bash脚本并行运行多个OS命令,然后在恢复之前等待它们完成,即:
command1&
command2&
commandn&
等待
命令
我想使用Python子进程实现相同的功能。这可能吗?如何在恢复之前等待subprocess.call命令完成?
答案 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()