ここの公式ドキュメントには、次の例が示されています。
def worker():
while True:
item = q.get()
do_work(item)
q.task_done()
q = Queue()
for i in range(num_worker_threads):
t = Thread(target=worker)
t.daemon = True
t.start()
for item in source():
q.put(item)
q.join() # block until all tasks are done
メインスレッドが続行する前に、この時点ですべてのスレッドが強制終了されていることを確認したいと考えています。キュー内のすべてのタスクが処理された後、q.get() メソッドで例外が発生し、スレッドが強制終了されると思います。あれは正しいですか?