为什么python线程模块中所有线程的名称相同?

时间:2016-07-26 18:00:13

标签: python multithreading python-3.x python-multithreading

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()也给出了相同的结果。我想知道这是它的工作方式还是运行相同的线程,所以它传递了名称MainThread

输出:
这是MainThread
这是MainThread
这是MainThread
这是MainThread

1 个答案:

答案 0 :(得分: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()