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") -> 두번째 우선순위
'Developer > Python' 카테고리의 다른 글
[Python] LinkedList 구현하기 (0) | 2021.04.20 |
---|---|
[Python] Stack 구현하기 (0) | 2021.04.19 |
Python 문자열 활용 : isdigit isalpha isalnum (0) | 2021.02.15 |
[Python] collections 모듈 Counter 클래스 사용하기 (0) | 2021.01.31 |
[Python] 이벤트 루프 (0) | 2021.01.17 |