另外请问一下使用
queue.join()
queue.task_done()
和
while not workQueue.empty():
pass
这两种方式来判断队列中是否还有任务的机制有区别吗?哪种更好呢?
怪我咯2017-04-18 09:59:50
디자인 및 사용 시나리오에 따라 다릅니다.
queue.join은 대기열의 모든 메시지가 검색되고 반환되기 전에 task_done이 호출될 때까지 차단됩니다. 일반적으로 모든 작업이 처리될 때까지 기다린 다음 프로세스를 종료하는 데 사용됩니다.
Empty는 while 루프로 확인할 때 즉시 반환됩니다. 대기열이 비어 있으면 스레드는 계속해서 끝없이 루프됩니다. 루프에서 기다리는 것은 많은 CPU를 소비합니다.