Blog

2 August 2019

파이썬 큐 예제

큐가 비어 있는 후 popleft() 명령을 사용하여 무엇을 얻었는지 확인합니다. 이 문제를 처리할 수 있는 방법을 게시합니다. 파이썬 라이프큐는 마지막 선착장 데이터 구조라는 점을 제외하면 큐와 유사합니다. 다음은 간단한 파이썬 LifoQueue 예제 코드입니다. 큐가 시각적으로 작동하는 방식에는 몇 가지 차이점만 있습니다. 먼저 최대 크기를 큐에 설정했는데 여기서 0은 무한을 의미합니다. 그것은 꽤 바보이지만 어떻게 든 유용하다고 확신합니다. 여러 스레드에서 Queue 클래스를 사용하는 방법의 예로 매우 단순한 팟캐스팅 클라이언트를 만들 수 있습니다. 이 클라이언트는 하나 이상의 RSS 피드를 읽고, 다운로드를 위해 인클로저를 큐에 대기하고, 스레드를 사용하여 여러 다운로드를 병렬로 처리합니다. 단순하고 실제 사용하기에 적합하지 않지만 스켈레톤 구현을 통해 Queue 모듈을 사용하는 예제를 제공하기에 충분한 코드를 제공합니다.

이 자습서에 대 한 입니다. 큐의 응용 프로그램을 배워야 합니다. 또한, 파이썬센트럴에서 서큘러 큐 및 우선 순위 대기열과 같은 다른 유형의 큐에 대해 자세히 알아보려면 여기에서 계속 지켜봐 주시기 바랍니다. 해피 파이썬! 첫 번째 줄에서 파이썬 큐 모듈을 가져왔습니다. 그런 다음 큐 모듈에 큐, LifoQueue 및 PriorityQueue와 같은 세 개의 클래스가 포함되어 있으므로 큐의 개체를 만들었습니다. 다음 단계는 표시 순례자의 피드 파서 모듈을 사용하여 피드 내용을 검색하고 인클로저의 URL을 대기열에 두는 것입니다. 첫 번째 URL이 큐에 추가되는 즉시 작업자 스레드 중 하나가 해당 URL을 선택하고 다운로드를 시작해야 합니다. 아래 루프는 피드가 소진될 때까지 항목을 계속 추가하고 작업자 스레드는 URL을 다운로드하기 위해 번갈아 가며 삭제합니다. 매개 변수 maxsize는 큐에 추가할 수 있는 항목을 제한하는 데 사용되는 정수입니다. 여기서는 목록의 추가 및 팝 작업을 사용하여 큐의 핵심 작업을 시뮬레이션합니다.

다음으로, 우리는 함수 를 정의할 필요가 downloadEnclosures() 그 다운로드를 처리, 작업자 스레드에서 실행됩니다. 다시 말하지만, 그림의 경우 다운로드만 시뮬레이션합니다. 실제로 인클로저를 다운로드하려면 urllib 또는 urllib2를 사용할 수 있습니다. 이 예제에서는 스레드 ID에 따라 가변적인 시간을 절전 모드로 하여 다운로드 지연을 시뮬레이션합니다. 스택 및 큐에 대한 실제 사용 사례가 많이 있으므로 이를 이해하면 많은 데이터 저장소 문제를 쉽고 효과적인 방식으로 해결할 수 있습니다. 이름에서 알 수 있듯이 큐는 FIFO(선착권) 원칙을 따릅니다. 마치 영화 티켓을 기다리는 것처럼, 줄을 서서 가장 먼저 서있는 것은 티켓을 구입하고 영화를 즐기는 첫 번째 것입니다. 큐에 대기 중인 작업이 완료될 때까지 기다리는 방법의 예: 큐에 있는 항목의 처리 순서는 큐에 생성되거나 큐에 추가되는 순서가 아니라 해당 항목의 특성을 기반으로 해야 하는 경우가 있습니다. 예를 들어 급여 부서의 인쇄 작업이 개발자가 인쇄한 코드 목록보다 우선할 수 있습니다. PriorityQueue는 큐의 내용의 정렬 순서를 사용하여 검색할 을 결정합니다. 가장 최근에 큐에 넣은 항목()은 get()에 의해 제거됩니다.

나머지 코드는 Queue 예제와 동일하므로 모든 것을 함께 넣고 알아 낼 수 있습니다 : 간단한 파이썬 목록은 큐 및 스택으로도 작동 할 수 있습니다.

Bize Ulaşın