Thread-Ausführung vorzeitig initiiert
Obwohl t1.start() nicht aufgerufen wurde, warum beginnt t1 mit der Ausführung vor der nachfolgenden print-Anweisung?
Analyse
Das Vorhandensein von Klammern nach self.read() in der Zieldefinition von t1 löst aufgrund der standardmäßigen Parameterübergabesemantik von Python eine vorzeitige Ausführung aus. Durch Weglassen der Klammern wird self.read als Funktionsreferenz und nicht als Ergebnis der Ausführung übergeben.
Auflösung
Um eine korrekte Ausführung sicherzustellen, entfernen Sie die abschließenden Klammern von self.read():
# Remove parentheses to pass a function reference t1 = threading.Thread(target=self.read) t1.start() print("something")
Für Ziele, die Argumente erfordern, verwenden Sie args und kwargs oder eine Lambda-Funktion:
# Using args and kwargs (preferred) t1 = threading.Thread(target=f, args=(a, b), kwargs={'x': c}) # Using a lambda function (watch for variable reassignment issues) t1 = threading.Thread(target=lambda: f(a, b, x=c))
Das obige ist der detaillierte Inhalt vonWarum wird mein Thread vor der Print-Anweisung ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!