我正在尝试在Python 2.7中并行运行shell命令列表作为子进程(每次4个)。注意 cmds
是代码中其他位置生成的有效字符串列表。这是我到目前为止的地方......
from multiprocessing import Pool
import subprocess
def worker(cmd):
print cmd
subprocess.Popen(cmd, shell=true)
pool = Pool(4)
for cmd in cmds:
pool.apply_async(worker, [cmd])
从这里我得到没有输出也没有错误。非常感谢任何建议。
答案 0 :(得分:0)
也许你的脚本在流程运行之前就结束了?
我尝试了你的代码,我遇到了同样的问题。 要解决它,你应该关闭池( Pool.close())并等待进程结束( Pool.join())。 检查一下:
from multiprocessing import Pool
import subprocess
cmds=['str1', 'str2', 'str3', 'str4']
def worker(cmd):
print cmd
p = subprocess.Popen(cmd, shell=true)
p.wait()
pool = Pool(4)
for cmd in cmds:
pool.apply_async(worker, [cmd])
pool.close()
pool.join()
输出:
str1
str2
str3
str4