python queue 예제

파이썬 목록은 큐를 구현하기가 너무 쉬워했습니다. 그러나 Queues 언어를 불가지론적으로 구현하려면 다음 사항을 염두에 두어야 합니다. 생산자는 계속해서 큐에 새 항목을 배치하고 소비자는 큐에서 항목을 선택하고 처리한 다음 task_done()를 호출하여 한 항목이 가져오고 성공적으로 처리되었음을 큐에 표시합니다. 여기서는 목록의 추가 및 팝 작업을 사용하여 큐의 핵심 작업을 시뮬레이션합니다. 이 예제에서는 단일 스레드를 사용하여 요소가 삽입된 순서와 동일한 순서로 큐에서 제거되는 것을 보여 줍니다. 파이썬 큐 모듈에서 다음은 큐 개체를 조작하거나 작동하는 데 사용되는 가장 일반적인 방법입니다. 우리는 이미 이전 예제에서 세 가지 방법을 보았습니다. 그들은 넣어 (), get() 및 qsize()입니다. 우리는 몇 가지 다른 방법을 볼 수 있습니다.

큐 모듈의 이름이 파이썬 3의 큐로 변경되었습니다. 2to3 도구는 소스를 파이썬 3으로 변환 할 때 자동으로 가져오기를 조정합니다. 큐가 비어 있으면 true 그렇지 않으면 false를 반환합니다. do_stuff()가 전체 대기열을 채찍질하는 방법을 확인합니다. 좋은데요. 그러나 큰 작업을 수행하거나 많은 대기가 필요한 작업 (예 : API에서 데이터를 가져오는 경우)은 어떨까요? 예를 들어 do_stuff()가 매번 실행하는 데 30초가 걸리고 바보 같은 API가 무언가를 반환하기를 기다리고 있다고 가정합니다. 이 함수는 실행될 때마다 30초가 걸리며 20번 실행되므로 20개의 항목만 통과하는 데 10분이 소요됩니다. 그건 정말 똥입니다.

3. 스택 이 모듈 대기열은 기술적으로 스택으로 작동하는 LIFO 큐를 제공합니다. FIFO 큐에 대한 생성자입니다. maxsize는 큐에 배치할 수 있는 항목 수에 대한 상한 제한을 설정하는 정수입니다. 삽입은 큐 항목이 소비될 때까지 이 크기에 도달하면 차단됩니다. maxsize가 0보다 작거나 같으면 큐 크기는 무한합니다. 출력에서 큐가 비어 있으면 생산자가 큐에 항목을 넣을 때까지 소비자가 대기하는 것을 볼 수 있습니다.