Zeilenweise Abfrage von Daten aus der stdout von Subprozess

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Paraphrazor
User
Beiträge: 2
Registriert: Dienstag 8. September 2009, 13:46

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.
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

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
Paraphrazor
User
Beiträge: 2
Registriert: Dienstag 8. September 2009, 13:46

Danke yipyip jetzt funktionierts. Hab gar nicht daran gedacht dass man stdout ja auch flushen kann.
Antworten