Popen
объект имеет метод .wait()
точно определенный для этого: ждать завершения данного подпроцесса (и, кроме того, , для перенастройки своего статуса выхода).
Если вы используете этот метод, вы предотвратите, чтобы процесс зомби лежал слишком долго.
(В качестве альтернативы вы можете использовать subprocess.call()
или subprocess.check_call()
для вызова и ожидания. Если вам не требуется IO с процессом, этого может быть достаточно. Но, вероятно, это не вариант, потому что ваш, если два подпроцесса кажутся быть должны работать параллельно, что они не будут с (check_
) call()
.)
Если у вас есть несколько подпроцессов ждать, вы можете сделать
exit_codes = [p.wait() for p in p1, p2]
который возвращается, как только все подпроцессы имеют законченный. Затем у вас есть список кодов возврата, которые вы, возможно, можете оценить.
использовать метод wait: 'p1.wait(); p2.wait() ' –
проверить этот вопрос вне: http://stackoverflow.com/questions/6341358/subprocess-wait-not-waiting-for-popen-process-to-finish-when-using-threads – Calum
http: //stackoverflow.com/questions/100624/python-on-windows-how-to-wait-for-multiple-child-processes – Gjordis