Hi Heiko und andere,

Am 02.09.19 um 13:12 schrieb Heiko Schlittermann:
Dein Wrapper puffert - wenn ich es richtig gesehen habe - noch mehr als
nur zeilenweise. Oder habe ich die Stelle verpasst, wo es nach dem Lesen
aus dem Select sofort wieder auf den entsprechenden Kanal
rausgeschrieben wird?

Der Aufrufer des Wrappers sieht keinen Unterschied. Die Zeichen kommen 
zeichenweise.
Die Ausgabe für das Log-File wird gepuffert. Das ist für meinen Zweck voll ok.


„Mein“ Wrapper puffert zeilenweise, ja, weil sonst die Ausgabe mit den
Präfixen durcheinander gerät.

Wenn Aufrufer sich auf den Fortschrittsbalken verlassen, sind sie arm.
Das aufgerufene Programm könnte in Abwesenheit eines Terminals
beschließen, gar keinen Balken zu malen.

Der Code des Aufrufer, der den Fortschrittsbalken liest ist nicht von mir, und
lässt sich schwer ändern. Ist eben so.



Aber egal, wie Du es löst, Du solltest darauf verzichten, die erzeugte
Ausgabe erst komplett in einem Dictionary zu speichern und anschließend
auszugeben, es gibt keinen Grund dafür. Du kannst die gelesenen Daten
sofort verarbeiten. Für die Ausgabe in das File könntest Du vielleicht
kontrollieren, ob eine Zeile komplett ist und wenigstens so lange
puffern, aber dann raus damit.

Ich habe meinen Anwendungsfall gelöst und da passt alles prima in den RAM.
Aber ich habe deine Bedenken verstanden. Prinzipiell könnten auch mehrere 
Gigabytes
über stdout raus gehen.

Manchmal denke ich mir, dass vieles deutlich einfacher wäre, wenn es nur stdout 
geben würde,
und nicht noch stderr. Diese zwei Ströme machen es manchmal nervig.

Gruß,
  Thomas

--
Thomas Guettler http://www.thomas-guettler.de/
I am looking for feedback: https://github.com/guettli/programming-guidelines

Antwort per Email an