2016-07-26 67 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() 
相关问题