Python が初めてで、マルチスレッドを理解しようとしています。Queueに関する Python ドキュメントの例を次に示します。
私の人生の中で、この例がどのように機能するのか理解できません。worker() 関数には、無限ループがあります。従業員はループから抜け出すタイミングをどのように知るのでしょうか? 割れ具合はないようです。
そして、結合は最後に何をしているのでしょうか? 代わりにスレッドに参加するべきではありませんか?
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
また、別の質問です。いつマルチスレッドを使用する必要があり、いつマルチプロセッシングを使用する必要がありますか?