另外请问一下使用
queue.join()
queue.task_done()
和
while not workQueue.empty():
pass
这两种方式来判断队列中是否还有任务的机制有区别吗?哪种更好呢?
怪我咯2017-04-18 09:59:50
具體要看你的設計和使用場景。
queue.join會一直阻塞,直到佇列中所有的message都被get出來並且呼叫task_done才會回傳。通常用在等待所有的任務都處理完了,然後退出進程。
empty會立刻返回,用你的while循環檢查時,如果隊列為空線程會一直用死循環。循環等待會很耗CPU。