Seite 1 von 1

Zeilenweise Abfrage von Daten aus der stdout von Subprozess

Verfasst: Dienstag 8. September 2009, 13:56
von Paraphrazor
Hallo zusammen,

ich habe folgendes Problem ich starte aus einer in Python geschriebenen GUI Anwendung ein Konsolenprogramm als Subprozess. Dieser Subprozess führt einige aufwendige Berechnungen durch deren Zwischenergebnisse auf die stdout ausgegeben werden. In meiner Python Anwendung will ich diese einzelnen Zeilen dann auslesen und darauf reagieren (konkret einen Graphen aktualisieren). Wie ich den Subprozess erstelle ist klar auch wie ich die Daten gebuffert auslese.

Das Problem ist, dass ich die Daten sobald der Subprozess sie geschrieben hat in meiner Python Anwendung haben will und nicht immer mehrere Zeilen gebuffert werden sollen, da zwischen zwei Zwischenergebnissen durchaus schonmal einige Zeit vergehen kann.

Kann mir jemand sagen wie ich dieses automatisch buffering verhindern kann?


Edit: Das ganze findet unter Linux statt hatte ich vergessen zu sagen.

Verfasst: Dienstag 8. September 2009, 15:07
von yipyip
Hallo Paraphrazor,
mit sys.stdout.flush wird der Buffer sofort ausgegeben. Wenn ich Dein Problem richtig verstanden habe, sollte dieser Thread hilfreich sein:
http://www.python-forum.de/topic-18690.html
:wink:
yipyip

Verfasst: Dienstag 8. September 2009, 15:51
von Paraphrazor
Danke yipyip jetzt funktionierts. Hab gar nicht daran gedacht dass man stdout ja auch flushen kann.