另外请问一下使用
queue.join() queue.task_done()
和
while not workQueue.empty(): pass
这两种方式来判断队列中是否还有任务的机制有区别吗?哪种更好呢?
学习是最好的投资!
それはあなたのデザインと使用シナリオによって異なります。 queue.join は、キュー内のすべてのメッセージが取得され、戻る前に task_done が呼び出されるまでブロックされます。通常は、すべてのタスクが処理されるのを待ってからプロセスを終了するために使用されます。 Empty は、while ループで確認するとすぐに戻ります。キューが空の場合、スレッドは無限にループし続けます。ループで待機すると、大量の CPU が消費されます。
それはあなたのデザインと使用シナリオによって異なります。
queue.join は、キュー内のすべてのメッセージが取得され、戻る前に task_done が呼び出されるまでブロックされます。通常は、すべてのタスクが処理されるのを待ってからプロセスを終了するために使用されます。
Empty は、while ループで確認するとすぐに戻ります。キューが空の場合、スレッドは無限にループし続けます。ループで待機すると、大量の CPU が消費されます。