Одновременно вызывайте скрипт из 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()
Другие вопросы по тегам