[Python-de] Thread ein 2. Mal starten

Alexander 'boesi' Bösecke boesi.josi at gmx.net
Mo Mär 26 20:09:27 UTC 2007


moin

ich möchte einen Thread mehrfach starten (also starten-beenden-starten-...)

Doch beim 2. Start bekomme ich die Fehlermeldung 
"AssertionError: thread already started", obwohl ich beim Beenden des
Threads extra mit join() warte.

Wenn ich mir den Quelltext zu threading.Thread ansehe, ist das auch kein
Wunder: Die Funktion start testet auf die Variable self.__started und
setzt sie im Anschluss selbst auf True. Die Variable wird aber zu keinem
Zeitpunkt auf False gesetzt, der Thread kann also gar kein 2. Mal
gestartet werden.

Die Funktion isAlive tested auf "self.__started and not self.__stopped".
Das könnte die Funktion start natürlich auch tun, aber dann ist die
Variable self.__started irgendwie sinnfrei. Alternativ könnte die
Funktion __stop die Variable auf False setzen, aber dann meckert join.
Letztendlich beist sich die Katze selbst in'n Schwanz.

Es kann ja aber auch nicht der Sinn sein, jedesmal eine neue Instanz der
Klasse zu erzeugen, wenn der Thread gestartet werden soll, oder? Welche
Intention steckt also hinter diesem Design? Aus der Doku geht nicht
hervor, das ein Thread nicht neugestartet werden darf, wenn er beendet
wurde.


Vielen Dank schonmal für eure Antworten
cu boesi
-- 
Ein Wunder muss heute schon ganz schoen
wundervoll sein um ein Wunder zu sein,
sonst wuerde man sich ja gar nicht mehr wundern
                 .-==Prof. Dr. Harald Lesch==-.