
eine Frage zum Threating unter Windows :
Threating oder auch Multithreating ist eine sehr unschöne und potentiell gefährliche Angelegenheit - insbesondere wenn man es am falschen Ort macht: wer zB in einer Hell's Angels Kneipe multithreatet muss sich auf ein sehr blaues Auge gefasst machen...
Multithreading hingegen - das kann auch gefährlich werden, aber meistens nur in Form von Abstürzen.
Wie kann man Thread-Zombies manuell killen ohne den Rechner neu zu booten.
Mein Problem: Ich habe mit Python 2.4 einige Threads unter Windows erzeugt ( insgesamt 27 ), die noch zu existieren scheinen, wenn ich das Skript erneut starte. Ich erhalte folgende Meldung :
Traceback (most recent call last):
File "C:\python\ips_mon\experiment4\winevt_multiserve
r.py", line 99, in ?
thread.start()
File "C:\Python24\lib\threading.py", line 410, in start
assert not self.__started, "thread already started"
AssertionError: thread already started
None
Mit dem Taskmanager kann man ja keine Threads sehen, aber ich kann zumindest sicher sagen, das ich alle Prozesse, von denen aus ich die Threads gestartet hatte, zwischendurch gekillt hatte. Leider ohne Erfolg.
Weiss jemand einen Rat ?
Grundsätzlich gilt, das unter windows (auch Linux) threads zu einem Prozess gehören - und beendet werden, wenn der Prozess beendet wird. Deshalb kann das was du da beschreibst nicht wirklich das Problem sein. Selbst _wenn_ threads übrig blieben (was IMHO völlig unmöglich ist) - das beeinträchtigt keines falls die Möglichkeiten eines anderen Prozesses (und das wäre ein neu gestartets Programm) threads zu starten.
Ich denke mal das ist eher ein Artefakt deines Programmes - startest du das womöglich aus einer IDE? Ausserdem kann man mit Thread.setDaemon(True) verhindern, das ein laufender Thread weiterläuft wenn der main-Thread sich beendet. Das ist aber im Grunde nur eine dünne Logikschicht die den Prozess an der Beendigung hindert solange noch laufende Threads da sind - steht also _nicht_ im Widerspruch zu oben gesagtem.
Also alles in allem:
- setDaemon(Treu) aufrufen - Prozess extern starten, nicht aus einer IDE
Dann sollte das problem verschweinden.
MfG Diez
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de