2016-07-26 15 views
0
from threading import * 

def myfunc(i,name): 
    print("This is " + str(name)) 

for i in range(4): 
    name = current_thread().name 
    t = Thread(target=myfunc, args=(i,name,)) 
    t.start() 

current_thread().getName() gibt auch gleichen results.I fragt sich, ist dies der Weg, es funktioniert, oder ist es den gleichen Thread ausgeführt wird, so ist es das der MainThread Namen vorbei?Warum ist der Name aller Threads im Python-Threading-Modul gleich?


Ausgang:
Dies ist Mainthread
Dies ist Mainthread
Dieses Mainthread ist
Dieses Mainthread ist

+1

'name = current_thread() name' Sie überprüfen immer den Namen. des aktuellen Threads, der der Hauptthread ist. Sie müssen 't.name' überprüfen. –

+0

Ich nehme an, jedes Mal, wenn es in die Schleife eintritt, erzeugt es den Thread und current_thread(). Name sollte seinen Namen zurückgeben.why gibt es den Namen 'MainThread' zurück –

+1

Sie rufen das nicht von den Threads an. Sie rufen es nur vom Hauptthread an. –

Antwort

4

current_thread() immer den Faden zurückgibt, die current_thread() genannt. Sie erhalten wiederholt den Namen des Threads, der die Schleife ausführt, und nicht den Namen der Threads, die der Thread startet.

Wenn Sie die Namen der Fäden in der Schleife gestartet bekommen möchten, können Sie sie Aufruf haben current_thread():

import threading 

def target(): 
    print("This is", threading.current_thread().name) 

for i in range(4): 
    Thread(target=target).start()