632 Stimmen

Ein nicht-blockierender Lesevorgang in einem Unterprozess.PIPE in Python

Ich benutze die Unterprozessmodul um einen Unterprozess zu starten und eine Verbindung zu dessen Ausgabestrom (Standardausgabe) herzustellen. Ich möchte in der Lage sein, nicht-blockierende Lesevorgänge auf der Standardausgabe auszuführen. Gibt es eine Möglichkeit, .readline nicht-blockierend zu machen oder zu prüfen, ob Daten auf dem Stream sind, bevor ich die .readline ? Ich möchte, dass es portabel ist oder zumindest unter Windows und Linux funktioniert.

So mache ich es im Moment (es blockiert auf der .readline wenn keine Daten verfügbar sind):

p = subprocess.Popen('myprogram.exe', stdout = subprocess.PIPE)
output_str = p.stdout.readline()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X