queue.join() を使用すると終了しない単純な python アプリがあります。以下はコードです:
import threading
import Queue
q = Queue.Queue()
for i in range(5):
q.put("BLAH")
def worker():
while True:
print q.qsize()
a = q.get()
print q.qsize()
q.task_done()
print q.qsize()
for i in range(2):
t = threading.Thread(target=worker())
t.daemon = True
t.start()
q.join()
また、threading.enumerate() を出力してから 2 秒間スリープするウォッチドッグ スレッドも作成しました。残っている唯一のスレッドは MainThread であり、キューのサイズは実際には 0 です。このスクリプトは決して終了しません。私はctrl + zを押してからそれを殺さなければなりません。どうしたの?