2016-07-26 71 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()也給出了相同的results.I想知道這是它的工作原理,或者它運行在同一個線程的方式,所以它傳遞的名字MainThread爲什麼python線程模塊中所有線程的名稱都是相同的?


輸出:
這是MainThread
這是MainThread
這是MainThread
這是MainThread

+1

'名= current_thread()name'你總是檢查名稱。當前線程,這是主線程。你需要檢查't.name'。 –

+0

我想每次它進入循環它創建線程和current_thread()。名稱應該返回它的名稱,爲什麼它返回名稱'MainThread' –

+1

你不是從線程調用。你只能從主線程調用它。 –

回答

4

current_thread()總是返回調用current_thread()線程。您反覆檢索正在執行循環的線程的名稱,而不是線程啓動的任何線程的名稱。

如果你想在循環推出的線程的名稱,你可以有他們呼叫current_thread()

import threading 

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

for i in range(4): 
    Thread(target=target).start() 
相關問題