Python код завершается при попытке запустить exe-файл с помощью subprocess.Popen - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь запустить этот exe-файл:

s = subprocess.Popen('make.exe -console -verbose', stderr=subprocess.PIPE, stdin=subprocess.PIPE)

Хотя я мог бы использовать subprocess.run здесь, но мне нужно запустить его в режиме «Разблокировать», так как у меня есть другие части кода выполнять одновременно.

(PS: с subprocess.run он работает нормально, но в этом случае остальная часть кода не перемещается дальше)

1 Ответ

0 голосов
/ 31 марта 2020

Звонок Попену «неблокирующий». Другими словами, подпроцесс создается, и Popen немедленно возвращается. Если вы хотите что-то сделать с подпроцессом (например, чтение вывода или просто дождаться его завершения sh), вы можете использовать один из вызовов методов из docs , например, wait () или connect ().

Если вы просто хотите дождаться окончания подпроцесса, используйте wait () с дополнительным значением времени ожидания:

# create the sub process
s = subprocess.Popen('make.exe -console -verbose', stderr=subprocess.PIPE, stdin=subprocess.PIPE)

for _ in range(6):
    try:
        # wait for 10 seconds
        s.wait(10)
    except TimeoutExpired:
        print("Waited 10 seconds, process still not done")
        continue

print("Tired of waiting")
s.kill()
...