Heim > Backend-Entwicklung > Python-Tutorial > Warum wird mein Python-Thread ausgeführt, bevor ich ihn explizit starte?

Warum wird mein Python-Thread ausgeführt, bevor ich ihn explizit starte?

Susan Sarandon
Freigeben: 2024-11-10 08:03:02
Original
668 Leute haben es durchsucht

Why does my Python thread execute before I explicitly start it?

Thread-Ausführung vor explizitem Aufruf

Das Multithreading-Modul von Python ermöglicht die parallele Ausführung von Code mithilfe von Thread-Objekten. Beim Erstellen und Konfigurieren von Threads kann jedoch ein ungewöhnliches Verhalten auftreten.

Das Problem tritt auf, wenn eine Funktion mit nachgestellten Klammern an das Zielargument eines Threads übergeben wird, wie unten gezeigt:

t1 = threading.Thread(target=self.read())
Nach dem Login kopieren

Dieses Verhalten beruht auf der falschen Vorstellung, dass der Aufruf von target=self.read() dem Thread die Ausführung von self.read() zuweist. Das ist leider falsch. Durch Anhängen der Klammern wird die Funktion sofort aufgerufen und stattdessen ihr Rückgabewert als Ziel zugewiesen. Bei einem Thread-Objekt wird erwartet, dass es eine Funktion als Ziel erhält.

Um dieses Problem zu beheben, entfernen Sie einfach die Klammern aus dem Zielargument und rufen Sie explizit die start()-Methode des Threads auf:

t1 = threading.Thread(target=self.read)
t1.start()
Nach dem Login kopieren

Jetzt wird self.read() auf unbestimmte Zeit im neu erstellten Thread ausgeführt, sodass das Programm fortfahren und „etwas“ drucken kann. Diese Änderung stellt sicher, dass die Funktion korrekt als Ziel zugewiesen wird und nicht vorzeitig ausgeführt wird.

Das obige ist der detaillierte Inhalt vonWarum wird mein Python-Thread ausgeführt, bevor ich ihn explizit starte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage