Guten Morgen,
ich bastle gerade ein Script in dem ich das multiprocessing modul verwende. Grundsätzlich bin ich schon sehr mit meinem Ergebnis zufrieden, habe nur noch einen Schönheitsfehler der mich sehr stört.
Die Funktion welche als Prozess gestartet wird gibt zu beginn mittels print eine Info Zeile aus. Wenn ich meinen process pool auf 5 - 10 setzte klappt das auch noch wunderbar. Stelle ich allerdings 50 - 100 Prozesse zur verfügung klappt zwar technisch auch noch alles, nur passiert es dann gelegentlich dass die print ausgabe der prozesse teilweise gleichzeitig passiert. Ergebnis aus dem ganzen.... die Info welche pro prozess in einer Zeile landen sollte wird teilweise in einer Zeile ausgegeben.
Hier ein kleines Beispiel um dies zu veranschaulichen:
So sollte es eigentlich aussehen...
Zeile 01
Zeile 02
Zeile 03
Zeile 04
usw.
Wenn ich zu viele Prozesse auf einmal starte sieht die ausgabe in etwa so aus:
Zeile 01
Zeile 02
Zeile03
Zeile04
Zeile 05Zeile07
Zeile06
Mir ist dabei egal dass die Reihenfolge nicht stimmt, aber gibt es eine Möglichkeit irgendwie zu definieren dass ein Print immer in einer eigenen Ausgabezeile in der Shell landet?
glg Martin
Multiprocessing und Print Ausgabe
-
- User
- Beiträge: 168
- Registriert: Montag 9. Mai 2016, 09:14
- Wohnort: Berlin
Hallo,
anscheinend gibt es bei multiprocessing die Möglichkeit einen Lock zu nutzen.
Wäre das die Lösung für dich?
http://stackoverflow.com/questions/1911 ... -in-python
anscheinend gibt es bei multiprocessing die Möglichkeit einen Lock zu nutzen.
Wäre das die Lösung für dich?
http://stackoverflow.com/questions/1911 ... -in-python
Wie es scheint, funktioniert print() nicht atomar. Bei sys.stdout.write(message + '\n') scheint dies dagegen der Fall zu sein. Jedenfalls hat dies bei mir bislang zum Erfolg geführt, wobei es dabei stets nur um Kosmetik ging und es nicht wichtig war, das dies auch immer gegeben ist.