我正在尝试创建一个 python 脚本,该脚本调用 5 个其他 python 脚本同时运行,同时传入一个数组,然后 5 个脚本中的每一个对该数组执行操作并将不同的数组返回给初始脚本。
初始脚本然后意识到这 5 个已经返回值,然后对这 5 个数组执行操作。
我认为解决方案类似于
os.system(./script1.py arg1)
,os.system(./script2.py arg2)
但我不确定如何进行。
我正在尝试创建一个 python 脚本,该脚本调用 5 个其他 python 脚本同时运行,同时传入一个数组,然后 5 个脚本中的每一个对该数组执行操作并将不同的数组返回给初始脚本。
初始脚本然后意识到这 5 个已经返回值,然后对这 5 个数组执行操作。
我认为解决方案类似于
os.system(./script1.py arg1)
,os.system(./script2.py arg2)
但我不确定如何进行。
您可以使用线程池并行运行所有命令。我还切换到获取subprocess
程序输出的模块:
import multiprocessing.pool
import subprocess as subp
def worker(script):
proc = subp.Popen(script, shell=True, stdout=subp.PIPE, stderr=subp.PIPE)
out, err = proc.communicate()
return script, out, err, proc.returncode
scripts = ['./script1.py arg1', './script2.py arg2']
pool = multiprocessing.pool.ThreadPool(len(scripts))
for script, out, err, returncode in pool.map(worker, scripts):
do your magic
pool.close()
pool.join()