Wenn ich einen Prozess mit subprocess.Popen
in Python wie folgt aufrufen:
myproc = subprocess.Popen(...).communicate()
Was ist der richtige Weg, um seinen Status zu sehen? Nicht seine Ausgabe zu stdout oder stderr, aber sein Ausgangsstatus, sobald er beendet ist (z. B. 0 für den Erfolg oder ein anderer für den Fehler)?
returncode
ist in der Tat die Antwort, aber die Lösung muss nicht kompliziert sein.
Weitere Informationen finden Sie in Python subprocess
docs .
Ein Prozess hat keinen Rückgabecode, bis die Ausführung abgeschlossen ist. Wenn Sie also noch nicht fertig sind, müssen Sie entscheiden, was Sie tun möchten: warten Sie darauf oder geben Sie einen Indikator für "Ich bin noch nicht fertig" zurück.
Wenn Sie warten möchten, verwenden Sie communicate
und überprüfen Sie dann das Attribut returncode
.
Wenn Sie überprüfen möchten, ob der Rückgabecode gesetzt ist und None
zurückgibt, falls nicht, verwenden Sie Popen.poll()
.
Sie müssen möglicherweise wait
für Ihren Subprozess aufrufen und dann (einmal durchgeführt) den Status im Feld returncode
der Subprozessinstanz überprüfen.
Ich habe eine kleine Routine, die Dinge anruft, vielleicht hilft es ...
%Vor%Sie können es versuchen mit:
%Vor%Tags und Links python multiprocessing