2012-04-08 4 views
1

Ich habe die .join() -Methode überschreiben beim Erstellen einer Unterklasse von threading.Thread(). Wenn ich meine Klasse mit einem Testskript teste, funktioniert es gut, aber wenn ich es in meinem Programm verwende, wird die thread.join) -Methode immer wieder aufgerufen, aber das mache ich nicht. Wie heißt diese Methode? Keine Ausnahme wird geworfen, soweit ich das beurteilen kann. mit inspect die aufrufenden Funktionen scheint _exitfunc zu sein, aber ich finde keine Informationen dazu.thread.join() wird aufgerufen und es ist nicht ich

Mein Code ist zu lange zu schreiben, sondern kann here

Antwort

1

Wenn die anrufende Funktion _exitfunc ist gefunden werden, das bedeutet, dass die join Verfahren bei Beendigung des Programms aufgerufen wird. Dies ist zu erwarten, da das Python-Threading-Framework bei allen laufenden Nicht-Daemon-Threads als Teil der Programmbeendigung join aufruft.

Die beste Erklärung von _exitfunc ist eine weitere Stack-Überlauf Frage: What is a python thread

0

Wenn Sie nicht wollen, join() aufgerufen werden, wenn Programm beendet, den Thread einen Daemon machen:

t.daemon = True 

Non-Daemon Threads halten den Prozess so lange am Laufen, bis alle sterben.