Как запустить список списков команд параллельно, используя подпроцесс python

#python-3.x #parallel-processing #subprocess

#python-3.x #параллельная обработка #подпроцесс

Вопрос:

Я использую подпроцесс для выполнения скрипта perl для нескольких файлов. Сценарий имеет выходной аргумент, и я хочу, чтобы все выходные данные каждого параллельного запуска записывались в этот вывод.

что я пробовал

 from subprocess import Popen, PIPE
def proc_cmd(cmd_lst, outfile):
    proc_lst = []
    for cmd in cmd_list:
        with open(outfile, 'w') as out:
            run_proc = Popen(cmd, stdout=out, stderr=PIPE, shell=True)
            proc_lst.append(run_proc)
    for proc in proc_lst:
        if proc.poll() is None:
            proc.wait()

outfile = 'results.txt'
cmd_lst = [['perl script.pl -i', 'f1.txt', '-s', 'h1.txt', '-o', 'results.txt'], ['perl script.pl -i', 'f2.txt', '-s', 'h2.txt', '-o', 'results.txt'], ['perl script.pl -i', 'f3.txt', '-s', 'h3.txt', '-o', 'results.txt']]
proc_cmd(cmd_lst, outfile)
  

При запуске в мой outfile ничего не записывается. На самом деле, похоже, что он вообще не работает, и никаких ошибок не выводится. Я должен собирать все результаты в моем исходящем файле. Мне нужна помощь

Комментарии:

1. записываются ли скрипты perl results.txt , когда вы запускаете их напрямую с помощью perl?

2. Да, он обычно записывает в result.txt