A Popen
Objekt hat eine .wait()
Methode genau für diese definiert: für den Abschluss eines bestimmten subprocess zu warten (und außerdem , um seinen Austrittsstatus neu zu bestimmen).
Wenn Sie diese Methode verwenden, verhindern Sie, dass die Prozess-Zombies zu lange herumliegen.
(Alternativ können Sie subprocess.call()
oder zum Anrufen und Warten verwenden. Wenn Sie IO mit dem Prozess nicht brauchen, könnte das reichen. Aber wahrscheinlich ist dies keine Option, weil Ihre beiden Subprozesse scheinen angenommen werden, parallel laufen zu lassen, die sie nicht mit (check_
) call()
.)
Wenn Sie mehrere Teilprozesse warten müssen, können Sie
tun
exit_codes = [p.wait() for p in p1, p2]
die so bald wieder, da alle Teilprozesse haben fertig. Sie haben dann eine Liste von Rückgabecodes, die Sie vielleicht auswerten können.
Verwenden Sie die Wait-Methode: 'p1.wait(); p2.wait() ' –
überprüfen Sie diese Frage aus: 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