1

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

End
Thread
Thread

附加相关问题:只是为了确定if is set daemon flag 为true,是不是意味着调用join没有意义(因为当还有daemon线程时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'
4

2 回答 2

4

因为你实际上并没有调用 join。代替:

t.join

和:

t.join()

关键是t.join表达式返回bound method对象,加上括号使表达式成为方法调用。

加入线程只对用户线程很重要,守护线程不会阻止主线程完成。

于 2012-08-14T14:09:11.703 回答
2

您缺少 . 之后的括号t.join。应该是t.join()

于 2012-08-14T14:10:58.347 回答