Queue(큐)
- Queue(큐)는 먼저 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조
Queue의 특징
- FIFO(First In First Out) : 가정 먼저 넣은 데이터를 가장 먼저 꺼내는 데이터 구조
- Stack과는 반대되는 개념
- 운영체제(OS)에서 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해서 많이 사용
- double ended queue, priority queue 등도 있다
- Python에서는 queue 라이브러리 또는 List로 구현
Queue의 주요 기능
- Enqueue : 큐에 데이터를 넣는 기능
- Dequeue : 큐에서 데이터를 꺼내는 기능
When to use Queue
- 맛집 예약 시스템
- OS 프로세스 스케쥴링 시스템 (priority queue 사용)
Queue의 구현 with Python
List를 사용한 Queue 예제
queue_list = list()
def enqueue(data):
queue_list.append(data)
def dequeue():
data = queue_list[0]
del queue_list[0]
return data
for index in range(10):
enqueue(index)
10
dequeue()
0
print(queue_list)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
queue()를 사용한 queue 예제
import queue
data_queue = queue.Queue()
data_queue.put("funcoding")
data_qeueu.put(1)
data.queue.get()
'funcoding'
data_queue.qsize()
1
<queue.Queue object at 0x7ff2af73a220>
LifoQueue()를 사용한 queue 예제
import queue
data_queue = queue.LifoQueue()
data_queue.put("funcoding")
data_queue.put(1)
data_queue.qsize()
2
data_queue.get()
1
PriorityQueue()를 사용한 queue 예제
import queue
data_queue = queue.PriorityQueue()
data_queue.put((10, "korea"))
data_queue.put((5, 1))
data_queue.put((15, "china"))
data_queue.qsize()
3
data_queue.get()
(5, 1)
(10, 'korea')