Zwei Fragen zu threading

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
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Hallo,

Ich habe zwei Fragen zu threading:
1. Wie kann ich aus einem Thread heraus den Mainthread beenden?
2. Wenn ich bei einem Thread den 'daemon flag' setzte und dann meine Hauptprogramm beende, während der Thread z.B. gerade in eine Datei schreibt, wird diese dabei zerstört, oder?

Schon mal Danke, für eure Antworten!
Gruß, Harry
Gromit
User
Beiträge: 51
Registriert: Montag 8. Mai 2006, 19:07

ad 1.) Beenden eines Threads durch einen zweiten Thread wird im allgemeinen Fall nicht unterstützt. Du kannst allerdings dem Main-Thread eine KeyboardInterrupt-Excpetion schicken. Siehe: http://docs.python.org/lib/module-thread.html#l2h-2692

ad 2.) Das Schicksal einer Datei, in die geschrieben wird, hängt stark davon ab, wie du schreibst. Fileobjekte haben eine flush-Methode, welche das schreiben erzwingt. Das verhindert allerdings nicht, das zuviel geschrieben wird.

Wann eine Datie zerstört ist, wird durch das Dateiformat definiert, kann also im allgemeinen Fall nicht beantwortet werden.
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Danke für deine Antwort, Gromit!

Doch, wie fange ich die KeyboardInterrupt-Excpetion in meinem Hauptprogramm ab?
Gruß, Harry
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

HarryH hat geschrieben:wie fange ich die KeyboardInterrupt-Excpetion in meinem Hauptprogramm ab?
Hi HarryH!

Nur so als Hinweis :-)

Code: Alles auswählen

>>> import exceptions
>>> try:
...     raise exceptions.KeyboardInterrupt("Hallo")
... except exceptions.KeyboardInterrupt, data:
...     print data
...     
Hallo
>>> 
Das geht auch ohne "import".

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten