Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich die Ausgabe von Unterprozessen Zeile für Zeile in Python effizient lesen und verarbeiten?

Wie kann ich die Ausgabe von Unterprozessen Zeile für Zeile in Python effizient lesen und verarbeiten?

Barbara Streisand
Freigeben: 2024-12-14 16:38:11
Original
824 Leute haben es durchsucht

How to Efficiently Read and Process Subprocess Output Line by Line in Python?

So lesen Sie Subprocess stdout Zeile für Zeile

In Python kann die Verwendung von Subprocess zum Aufrufen eines Linux-Dienstprogramms, das eine große Ausgabemenge generiert, eine Herausforderung darstellen, wenn Sie möchten Erfassen und verarbeiten Sie die Ausgabe inkrementell.

Im übergeordneten Prozess liest die for-Zeile in der proc.stdout-Anweisung die gesamte Eingabe, bevor sie darüber iteriert. Dies kann dazu führen, dass die Ausgabe erst dann in Ihrer Anwendung angezeigt wird, wenn eine erhebliche Menge generiert wurde.

Um dieses Problem zu beheben, verwenden Sie stattdessen proc.stdout.readline():

import subprocess

proc = subprocess.Popen(['python', 'fake_utility.py'], stdout=subprocess.PIPE)
while True:
  line = proc.stdout.readline()
  if not line:
    break
  #the real code does filtering here
  print "test:", line.rstrip()
Nach dem Login kopieren

Dies Mit der Lösung können Sie jede Ausgabezeile filtern und drucken, sobald sie vom Unterprozess verfügbar wird. Bedenken Sie, dass Sie möglicherweise dennoch das Pufferverhalten des Unterprozesses berücksichtigen müssen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Ausgabe von Unterprozessen Zeile für Zeile in Python effizient lesen und verarbeiten?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage