我打电话加入,所以我不明白为什么主线程在所有线程完成之前打印'结束'。 输出是:
End
Thread
Thread
其他相关问题: 只是为了确定是否将守护进程标志设置为true,这是否意味着没有任何意义来调用join(因为main仍然可以在有守护进程线程时完成)?
#!/usr/bin/env python
import sys
import threading
from time import sleep
num_worker_threads = 2
threads = []
def worker():
sleep(1)
print 'Thread'
for i in range(num_worker_threads):
t = threading.Thread(target=worker)
threads.append(t)
t.start()
t.join
print 'End'
答案 0 :(得分:4)
因为你实际上没有打电话加入。替换:
t.join
使用:
t.join()
重点是t.join
表达式返回bound method
个对象,添加括号使表达式成为方法调用。
连接线程仅对用户线程有用,守护程序线程不会阻止主线程完成。
答案 1 :(得分:2)
t.join
之后你错过了方括号。它应该是t.join()
。