Heim > Backend-Entwicklung > Python-Tutorial > Wie erhalte ich eine Echtzeitausgabe von Subprocess.Popen in Python?

Wie erhalte ich eine Echtzeitausgabe von Subprocess.Popen in Python?

DDD
Freigeben: 2024-11-14 19:32:02
Original
665 Leute haben es durchsucht

How to Get Realtime Output from Subprocess.Popen in Python?

Echtzeitausgabe mithilfe von Subprocess abrufen

Subprocess ist ein leistungsstarkes Modul in Python, das zum Ausführen anderer Programme und zum Interagieren mit deren Eingabe und Ausgabe verwendet wird. Benutzer können jedoch auf ein Szenario stoßen, in dem sie die Ausgabe des ausgeführten Programms in Echtzeit und ohne Pufferung abrufen müssen.

Problembeschreibung

Das Problem tritt bei der Verwendung auf subprocess.Popen mit stdout als Pipe festgelegt. Die Ausgabe des umschlossenen Programms scheint gepuffert zu sein, was zu Datenblöcken und nicht zu einer zeilenweisen Übermittlung führt. Das Festlegen des bufsize-Parameters auf 1 oder 0 löst das Problem nicht.

Lösung: Iteratives Lesen von readline()

Trotz des oben genannten Unterprozessverhaltens das folgende Codefragment Ruft die Ausgabe effektiv in Echtzeit ab:

while True:
  line = p.stdout.readline()
  if not line: break
  ...
Nach dem Login kopieren

Die Verwendung von readline() anstelle der Iteration über p.stdout umgeht direkt das Pufferungsproblem und ermöglicht den Ausgabeabruf in Echtzeit.

Das obige ist der detaillierte Inhalt vonWie erhalte ich eine Echtzeitausgabe von Subprocess.Popen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage