Ответ 1
ОбъектA Popen
имеет метод .wait()
, который точно определен для этого: дождаться завершения данного подпроцесса (и, кроме того, для перенастройки своего статуса выхода).
Если вы используете этот метод, вы предотвратите, чтобы процесс-зомби лежали слишком долго.
(В качестве альтернативы вы можете использовать subprocess.call()
или subprocess.check_call()
для вызова и ожидания.Если вам не нужно IO с процессом, этого может быть достаточно. Но, вероятно, это не вариант, потому что ваш, если два подпроцесса, похоже, должны работать параллельно, что они не будет с (check_
) call()
.)
Если у вас есть несколько подпроцессов для ожидания, вы можете сделать
exit_codes = [p.wait() for p in p1, p2]
который возвращается, как только все подпроцессы завершены. Затем у вас есть список кодов возврата, которые вы, возможно, можете оценить.