Я запускаю сценарий Perl через модуль подпроцесса в Python в Linux. Функция, запускающая скрипт, вызывается несколько раз с вводом переменной.
def script_runner(variable_input):
out_file = open('out_' + variable_input, 'wt')
error_file = open('error_' + variable_input, 'wt')
process = subprocess.Popen(['perl', 'script', 'options'], shell=False,
stdout=out_file, stderr=error_file)
Однако, если я запустил эту функцию, скажем, дважды, выполнение первого процесса остановится при запуске второго процесса. Я могу добиться желаемого поведения, добавив
process.wait()
после вызова скрипта, так что я не застрял. Тем не мение, Я хочу выяснить, почему я не могу запускать сценарий с использованием подпроцесса столько раз, сколько хочу, и чтобы сценарий выполнял эти вычисления параллельно, не дожидаясь его завершения между каждым запуском.
UPDATE
Виновник Это было не так интересно: скрипт perl использовал общий файл, который перезаписывался при каждом выполнении.
Однако урок, который я извлек из этого, заключался в том, что сборщик мусора не удаляет процесс после его запуска, потому что это не повлияло на мой сценарий, когда я его разобрал.