Blog

2 August 2019

python3 queue 예제

이 설명에서는 큐의 일반적인 특성을 이미 이해한다고 가정합니다. 그렇지 않으면 계속하기 전에 일부 참조를 읽을 수 있습니다. 큐가 비어 있는 경우 True를 반환하고 False를 반환합니다. empty())가 True를 반환하는 경우 put() 후속 호출이 차단되지 않는다는 보장은 없습니다. 마찬가지로 empty())가 False를 반환하는 경우 get()에 대한 후속 호출이 차단되지 않는다는 보장은 없습니다. 매개 변수 maxsize는 큐에 추가할 수 있는 항목을 제한하는 데 사용되는 정수입니다. 다음 예제에서는 Python PriorityQueue를 사용하여 작업 스케줄러를 시뮬레이션합니다. 작업을 큐에 넣은 후 우선 순위 점수에 따라 작업이 큐에서 제거되는 것을 확인할 수 있습니다. 우선 순위 점수가 가장 낮은 항목이 대기열에서 먼저 제거됩니다. 큐는 스타벅스에서 커피를 사기 위해 줄을 서있을 때처럼 일상 생활에서 쉽게 적용 할 수있는 간단한 데이터 구조 개념입니다.

이 예제를 기반으로 몇 가지 관찰을 수행해 보겠습니다: 파이썬 큐를 사용하여 여러 스레드 크롤러를 빌드하는 방법에 대한 다른 예제를 보려면 이 문서를 참조할 수 있습니다. 비동기 큐는 큐 모듈의 클래스와 유사하도록 설계되었습니다. 비동기 큐는 스레드에서 안전하지 않지만 비동기/await 코드에서 특별히 사용되도록 설계되었습니다. get(호출하여 가져온 각 작업에 대해 후속 호출 totask_done()은 해당 작업의 처리가 완료된 큐를 나타냅니다. 항목을 큐에 넣습니다. 선택적 args 블록이 true이고 시간 설정이 없음(기본값)인 경우 사용 가능한 슬롯을 사용할 수 있는 때까지 필요한 경우 차단합니다. 시간 지정이 양수인 경우 대부분의 시간 시간 시간 초에서 차단되고 해당 시간 내에 사용 가능한 슬롯을 사용할 수 없는 경우 전체 예외가 발생합니다. 그렇지 않으면 (블록은 거짓), 무료 슬롯을 즉시 사용할 수 있는 경우 큐에 항목을 넣어, 그렇지 않으면 전체 예외를 발생 (시간 제한은 무시) .

이 섹션의 팟캐스팅 클라이언트의 소스 코드는 여러 스레드에서 Queue 클래스를 사용하는 방법을 보여 줍니다. 프로그램은 하나 이상의 RSS 피드를 읽고, 각 피드에서 가장 최근 5개의 에피소드를 다운로드할 수 있도록 인클로저를 대기열에 대기하고, 스레드를 사용하여 여러 다운로드를 병렬로 처리합니다. 프로덕션 용도에 대한 오류 처리가 충분하지 않지만 스켈레톤 구현에서는 큐 모듈의 사용을 보여 줍니다. 간단한 파이썬 목록은 큐 및 스택역할을 할 수 있습니다. 큐 메커니즘은 일상 생활에서 널리 그리고 많은 목적을 위해 사용됩니다. 큐는 FIFO 규칙(처음 처음 사용)을 따르며 정렬 및 더 많은 작업을 위한 프로그래밍에 사용됩니다. 파이썬은 일반적으로 C / C ++ 및 Java와 같은 언어로 만들어야하는 모듈로 클래스 큐를 제공합니다. 큐가 가득 차면 True를 반환하고 False를 반환합니다. full())이 True를 반환하는 경우 get()에 대한 후속 호출이 차단되지 않는다는 보장은 없습니다.

마찬가지로 full())가 False를 반환하는 경우 put() 후속 호출이 차단되지 않는다는 보장은 없습니다. 이 메서드는 큐 소비자 스레드에서 이전에 큐에 대기된 작업이 완료되었음을 나타내는 데 사용됩니다.

Bize Ulaşın