Developer/Python
[python] 큐(Queue) 라이브러리 사용하기 - Queue, LifoQueue, PriorityQueue
또쟁이
2021. 4. 10. 15:51
Queue
queue 의 기본인 FIFO(First In First Out)
Queue는 멀티 태스킹을 위한 프로세스 스케줄링 방식을 구현하기 위해 많이 사용된다 (운영체제)
Enqueue : 큐에 데이터를 넣는 기능
Dequeue : 큐에서 데이터를 꺼내는 기능
queue 라이브러리에는 Queue(), LifoQueue(), PriorityQueue() 를 제공한다.
- Queue() : 일반적인 큐 자료구조
- LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조 (like stack)
- PriorityQueue() : 우선순위 큐 -> 데이터마다 우선순위를 넣어서, 우선수위가 높은 순으로 데이터 출력
1. Queue() 사용하기
import queue
data_queue = queue.Queue()
data_queue.put("abc")
data_queue.put(1)
data_queue.qsize() # 2
data_queue.get() # abc -> 제일 먼저 인서트된 데이터 출력
data_queue.qsize() # 1 -> 9번줄에서 abc가 빠져나갔기 때문
data_qudud.get() # 1 출력
2. LifoQueue() 사용하기
import queue
data_queue = queue.LifoQueue()
data_queue.put("abc")
data_queue.put(1)
data_queue.qsize() # 2
data_queue.get() # 1 -> LIFO 구조이기 때문에 1이 먼저 출력
data_queue.qsize() # 1 -> 9번줄에서 1가 빠져나갔기 때문
data_qudud.get() # abc 출력
3. PriorityQueue() 사용하기
import queue
data_queue = queue.PriorityQueue()
data_queue.put((10,"abc")) # 우선순위를 표현하기 위해 튜플로 인서트 (우선순위, value)
data_queue.put((5,1))
data_queue.put((15,"ef"))
data_queue.qsize() # 3 -> 데이터는 3개
data_queue.get() # (5,1) -> 우선순위가 가장 높은 데이터 출력
data_queue.qsize() # 2 -> 10번줄에서 (5,1)가 빠져나갔기 때문
data_qudud.get() # (10,"abc") -> 두번째 우선순위