ホームページ  >  に質問  >  本文

java - python中queue的task_done和join起什么作用?

另外请问一下使用

queue.join()
queue.task_done()

while not workQueue.empty():
    pass

这两种方式来判断队列中是否还有任务的机制有区别吗?哪种更好呢?

PHPzPHPz2764日前861

全員に返信(1)返信します

  • 怪我咯

    怪我咯2017-04-18 09:59:50

    それはあなたのデザインと使用シナリオによって異なります。
    queue.join は、キュー内のすべてのメッセージが取得され、戻る前に task_done が呼び出されるまでブロックされます。通常は、すべてのタスクが処理されるのを待ってからプロセスを終了するために使用されます。
    Empty は、while ループで確認するとすぐに戻ります。キューが空の場合、スレッドは無限にループし続けます。ループで待機すると、大量の CPU が消費されます。

    返事
    0
  • キャンセル返事