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은 대기열의 모든 메시지가 검색되고 반환되기 전에 task_done이 호출될 때까지 차단됩니다. 일반적으로 모든 작업이 처리될 때까지 기다린 다음 프로세스를 종료하는 데 사용됩니다. Empty는 while 루프로 확인할 때 즉시 반환됩니다. 대기열이 비어 있으면 스레드는 계속해서 끝없이 루프됩니다. 루프에서 기다리는 것은 많은 CPU를 소비합니다.
디자인 및 사용 시나리오에 따라 다릅니다.
queue.join은 대기열의 모든 메시지가 검색되고 반환되기 전에 task_done이 호출될 때까지 차단됩니다. 일반적으로 모든 작업이 처리될 때까지 기다린 다음 프로세스를 종료하는 데 사용됩니다.
Empty는 while 루프로 확인할 때 즉시 반환됩니다. 대기열이 비어 있으면 스레드는 계속해서 끝없이 루프됩니다. 루프에서 기다리는 것은 많은 CPU를 소비합니다.