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