另外请问一下使用
queue.join()
queue.task_done()
和
while not workQueue.empty():
pass
这两种方式来判断队列中是否还有任务的机制有区别吗?哪种更好呢?
另外请问一下使用
queue.join()
queue.task_done()
和
while not workQueue.empty():
pass
这两种方式来判断队列中是否还有任务的机制有区别吗?哪种更好呢?
15 回答8.4k 阅读
8 回答6.2k 阅读
3 回答2k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
具体要看你的设计和使用场景。
queue.join会一直阻塞,直到队列中所有的message都被get出来并且调用task_done才会返回。通常用在等待所有的任务都处理完了,然后退出进程。
empty会立马返回,用你的while循环检查时,如果队列为空线程会一直用死循环。循环等待会很耗CPU。