Почему я должен использовать .wait () с модулем подпроцесса python?

Я запускаю сценарий 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 использовал общий файл, который перезаписывался при каждом выполнении.

Однако урок, который я извлек из этого, заключался в том, что сборщик мусора не удаляет процесс после его запуска, потому что это не повлияло на мой сценарий, когда я его разобрал.

6
задан Viktiglemma 12 November 2010 в 16:31
поделиться