Одновременно вызывайте скрипт из Python, передавая данные каждому и возвращая данные в оригинал
Я пытаюсь создать сценарий Python, который вызывает 5 других сценариев Python для одновременной работы во время передачи массива, а затем каждый из 5 сценариев выполняет операцию с этим массивом и возвращает другой массив в исходный сценарий.
Затем начальный сценарий понимает, когда 5 вернули значения, а затем выполняет операции над этими 5 массивами.
Я думаю, что решение что-то вроде os.system(./script1.py arg1)
, os.system(./script2.py arg2)
но я не уверен, как поступить.
1 ответ
Вы можете использовать пул потоков для параллельного запуска всех команд. Я также перешел на 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()