2013-03-17 7 views
8

Ich versuche gerade herauszufinden, wie Threads in Python arbeiten.Python: Laufende Funktion im Thread ändert nicht current_thread()

Ich habe den folgenden Code:

def func1(arg1, arg2): 

    print current_thread() 
    .... 

class class1: 

    def __init__(): 
     .... 

    def func_call(): 
     print current_thread() 
     t1 = threading.Thread(func1(arg1, arg2)) 
     t1.start() 
     t1.join() 

Was mir aufgefallen ist, dass beide Drucke Ausgang das gleiche. Warum ändert sich der Thread nicht?

Antwort

17

Sie führen die Funktion aus, statt sie zu übergeben. Versuchen Sie stattdessen:

t1 = threading.Thread(target = func1, args = (arg1, arg2)) 
+0

Es funktionierte, vielen Dank! –

5

Sie die Funktion aufrufen, bevor es dem Thread Konstruktor gegeben. Sie geben es auch als das falsche Argument (das erste positionelle Argument zu dem Thread-Konstruktor ist das group). Angenommen, func1 gibt None zurück, was Sie tun, entspricht dem Aufruf threading.Thread(None) oder threading.Thread(). Dies wird genauer in der threading docs erläutert.

Um Ihren Code Arbeit dies zu machen versuchen:

t1 = threading.Thread(target=func1, args=(arg1, arg2)) 
t1.start() 
t1.join() 
Verwandte Themen