84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
另外请问一下使用
queue.join() queue.task_done()
和
while not workQueue.empty(): pass
这两种方式来判断队列中是否还有任务的机制有区别吗?哪种更好呢?
学习是最好的投资!
具體要看你的設計和使用場景。 queue.join會一直阻塞,直到佇列中所有的message都被get出來並且呼叫task_done才會回傳。通常用在等待所有的任務都處理完了,然後退出進程。 empty會立刻返回,用你的while循環檢查時,如果隊列為空線程會一直用死循環。循環等待會很耗CPU。
具體要看你的設計和使用場景。
queue.join會一直阻塞,直到佇列中所有的message都被get出來並且呼叫task_done才會回傳。通常用在等待所有的任務都處理完了,然後退出進程。
empty會立刻返回,用你的while循環檢查時,如果隊列為空線程會一直用死循環。循環等待會很耗CPU。