2016-07-26 4 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(). Name должен возвращать свое имя. Почему он возвращает имя '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()