Bei Programmen, die mit dem Unterprozessmodul von Python gestartet werden, muss das Programm warten, bis die Ausführung des Unterprozesses abgeschlossen ist bevor auf die Ausgabe zugegriffen werden kann. Dies kann bei Prozessen mit langer Laufzeit unpraktisch sein, da dadurch verhindert wird, dass das Programm fortfährt, bis der Unterprozess abgeschlossen ist.
Um das Drucken der Ausgabe des Unterprozesses in Echtzeit zu ermöglichen, wird über die Unterprozesse iteriert Der Ausgabestream kann verwendet werden. Dadurch kann das Programm Ausgabezeilen verarbeiten, sobald sie verfügbar sind.
Unten ist ein Beispiel, das diesen Ansatz demonstriert:
<code class="python">from __future__ import print_function # Python 2.x compatibility import subprocess def execute(cmd): popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) for stdout_line in iter(popen.stdout.readline, ""): yield stdout_line popen.stdout.close() return_code = popen.wait() if return_code: raise subprocess.CalledProcessError(return_code, cmd) # Example for path in execute(["locate", "a"]): print(path, end="")</code>
Durch die Verwendung dieses iterativen Ansatzes kann das Programm verarbeiten Ausgabe des Unterprozesses Zeile für Zeile, sobald sie verfügbar ist, wodurch eine Ausgabeanzeige in Echtzeit ermöglicht wird, während der Unterprozess ausgeführt wird.
Das obige ist der detaillierte Inhalt vonWie drucke ich die Ausgabe eines Unterprozesses in Echtzeit, während er ausgeführt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!