Звонок Попену «неблокирующий». Другими словами, подпроцесс создается, и 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()