2013-10-03 67 views
7

我试图创建86个task.py实例来同时运行。同时运行python脚本的多个实例

import sys 
import subprocess 

for file in range(86): 
    subprocess.call([sys.executable,'task.py',str(file)+'in.csv',str(filen)+'out.csv']) 
+6

问题是什么? – Alex

+2

@Alex问题是“subprocess.call等待命令完成,请使用subprocess.Popen代替:” – user14372

回答

11

subprocess.call等待命令完成。使用subprocess.Popen代替:

import sys 
import subprocess 

procs = [] 
for i in range(86): 
    proc = subprocess.Popen([sys.executable, 'task.py', '{}in.csv'.format(i), '{}out.csv'.format(i)]) 
    procs.append(proc) 

for proc in procs: 
    proc.wait() 
+0

非常感谢;) – user14372

+0

此解决方案是“多线程”解决方案吗?或者实际上它启动了多个python实例? – Lisa

+0

@Lisa,正如模块的名称所示,它启动多个实例(子“进程”)。 (OP的原代码也启动了多个实例) – falsetru