ich bin gerade etwas über das Verhalten von isAlive verwundert.
Hintergrund:
Ich habe einen Thread der wie ein "Timer" alle n Zeitintervalle eine Aktion ausführen soll
Ziel
Da ich davon ausgehe, dass der Thread beendet werden kann, möchte ich diesen Thread
wieder neu starten, falls er beendet wurde.
Problem
Folgender code stellt in reduzierter Form die angesprochene Timer Klasse dar.
Code: Alles auswählen
class myMailTimer(Thread):
def __init__(self, func, sec=5):
Thread.__init__(self)
self.func = func
self.sec = sec
def run(self):
while True:
self.func()
time.sleep(self.sec)
Code: Alles auswählen
def _TimerIsStillAlive(self):
try:
if not self.env.mailtimer.isAlive():
self.env.mailtimer.start()
except AttributeError, e:
self.env.mailtimer = self.myMailTimer(self._sendAllMails,
self.DEFAULT_SLEEP_TIME)
self.env.mailtimer.start()
self.log.debug ( "Mail Timer was activated." )
Nun Starte ich wie üblich das Python programm und der thread arbeitet wie gewollt.
Über das Tool Sysinternals process monitor "kille" ich geziehlt den entsprechenden
Thread im Pyhton Prozess.
Leider liefert die Methode isAlive() bzw. is_alive() trotzdem weiterhin True zurück.
Könnt mir jemand auf die Sprünge helfen, was ich hier nicht bedenke?
Vielen Dank schonmal
Grüße
Stefan