Seite 1 von 1

Umleiten der Ausgaben in eine Datei

Verfasst: Mittwoch 9. Juni 2010, 16:58
von 123456789
Hallo,

Ich möchte die Ausgaben der print Befehle in eine Datei umleiten.
Beim start aus der Konsole mit "python script.py > file.txt" funktionierte das auch wunderbar.

Seitdem ich aber Teile des Scripts in eigenen Threads laufen lasse funktioniert das nicht mehr.

hat da jemand eine Idee was ich da falsch mache.

ich verwende:
Ubuntu 10.04
python 2.6

Re: Umleiten der Ausgaben in eine Datei

Verfasst: Mittwoch 9. Juni 2010, 17:51
von b.esser-wisser
Koordinier das schreiben mit einer(-em?) threading.Lock()
oder
Schreib in den threads in ein Queue.Queue() un dlass einen (extra) thread in die Datei schreiben
oder
am besten:
Benutz das logging modul - das funktioniert 1A mit threads
hth, Jörg
edit: lauter typos

Re: Umleiten der Ausgaben in eine Datei

Verfasst: Freitag 11. Juni 2010, 08:40
von 123456789
Hallo Jörg,

vielen Danke für deinen Tipp. Das Logging- modul funktioniert wirklich super.
Aber was mich noch interessiert ist, warum der print- Befehl in Verbindung mit Threads Probleme macht.
Hast du dafür vlt. eine Erklärung?

danke!

Re: Umleiten der Ausgaben in eine Datei

Verfasst: Freitag 11. Juni 2010, 09:52
von Rebecca
Das ist ein allgemeines Nebenlauefigkeitsproblem, siehe z.B. Kritischer Abschnitt. Nur weil etwas beim Programmieren ein Befehl ist, heisst das noch lange nicht, dass die Operation atomar ist, sodass sich zwei Threads ins Gehege kommen koennen.

Re: Umleiten der Ausgaben in eine Datei

Verfasst: Freitag 11. Juni 2010, 09:53
von lunar
Wie sehen diese „Probleme“ denn genau aus? „Funktioniert nicht“ ist keine Fehlermeldung, zu der man viel sagen kann ...

Geraten würde ich sagen, dass die Ausgabe durcheinander ist, aber das liegt eben daran, dass Befehle selten atomar sind und die Ausführungsreihenfolge nicht deterministisch ist. Ein Thread, der "Hello World" auf die Konsole schreibt, kann gut und gerne nach "Hello" unterbrochen werden. Wenn dann ein anderer Thread schreibt, ist die Ausgabe eben fehlerhaft.

Re: Umleiten der Ausgaben in eine Datei

Verfasst: Samstag 12. Juni 2010, 17:53
von 123456789
hallo,
und danke für eure Erklärungen.
Ich hatte aber wirklich das Problem, dass ich überhaubt keine Ausgeben erhalten habe. Vermutlich lag das an einem anderen Problem.

thx,