1

参加するように呼びかけたので、すべてのスレッドが終了する前にメインスレッドが「End」を出力する理由がわかりません。出力は次のとおりです。

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'
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 に答える