python - 为什么主线程在所有线程加入之前打印结束行

时间:2012-08-14 14:07:49

标签: python

我打电话加入,所以我不明白为什么主线程在所有线程完成之前打印'结束'。 输出是:

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'

2 个答案:

答案 0 :(得分:4)

因为你实际上没有打电话加入。替换:

t.join

使用:

t.join()

重点是t.join表达式返回bound method个对象,添加括号使表达式成为方法调用。

连接线程仅对用户线程有用,守护程序线程不会阻止主线程完成。

答案 1 :(得分:2)

t.join之后你错过了方括号。它应该是t.join()