PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Python] Threading und das Beenden von Threads


Tatonka
19.11.2005, 22:38
Hi,

Ich habe einen Server geschrieben der innerhalb mit Hilfe von Threads parallel arbeitet. Nun möchte ich gerne von der "Elternklasse" aus Threads beenden können wenn diese zu lange unterwegs sind.
Ich habe schon eine Methode implementiert, die den Thread beendet. Es kommt allerdings vor, dass der Thread nicht innerhalb angemessener Zeit darauf reagieren kann. Dann würde ich ihn gerne hart abwürgen ala thread1.exit(). Kann dafür aber keine passende Methode finden.
Wie gesagt das ganze Programm basiert auf dem Modul threading. Thread hatte noch eine exit() Methode, aber threading nicht mehr oder? Oder wie kann ich die ansprechen?

Danke schon mal, bin echt für jeden Tip dankbar.

T.


TheBee
20.11.2005, 14:02
Hallo,

Die Funktionalität einen Thread von außerhalb zu beenden ist in Python nicht vorgesehen. Aus der Doku zum Modul 'threading':
"[...] threads cannot be destroyed, stopped, suspended, resumed, or interrupted."
Die Methode exit() aus dem 'thread'-Modul beendet auch nur den aktuellen Thread. Es ist damit nicht möglich einen bestimmten anderen Thread zu beenden.
Dir wird also wohl nichts anderes übrig bleiben, als die Berechnungen in deinen Threads filigraner zu gestalten damit der Thread mehr Möglichkeiten hat auf eine Anforderung zum Beenden zu reagieren.

Bernd

Tatonka
20.11.2005, 18:46
Hi,

Danke für die Antwort.
Dann werde ich mal schauen, ob ich das irgendwie geschickter gelöst bekomme.

Vielen Dank
T.