[Threading] isAlive() immer true
Verfasst: Montag 23. August 2010, 13:29
Hallo zusammen,
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.
Über folgende "Singelton - Nachahmung" kontrolliere ich den Zustand des Timers.
Simulation
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
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