【发布时间】:2018-12-17 11:59:16
【问题描述】:
我刚刚进入多线程。这是我在教程中某处找到的代码,我试图围绕它进行思考:
import threading, time
def f():
print('thread function')
time.sleep(1)
if __name__ == '__main__':
for i in range(3):
t = threading.Thread(target=f, name="t_thread")
t.start()
我了解每个线程对象多次调用“start()”会导致 RuntimeError。
但是这段代码通过创建多个具有相同实例名称“t”和相同线程名称“t_thread”的类“Thread”实例然后在其上调用“start()”来创建多个线程。 Python 如何区分这些不同的实例和同名的线程?为什么在已经运行的实例上调用“start()”不会导致RuntimeError?
谢谢!
【问题讨论】:
-
"t" 不是
Thread实例的名称。您的代码创建了三个Thread实例,均名为“t_thread”。 “t”是一个局部变量的名称,它临时引用三个线程实例中的每一个——每次循环时都不同。
标签: python multithreading object