#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