가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 FIFO 구조입니다.
LILO 라고 하기도 하고, (last-in, last-out) 먼저 줄을 서는 사람이 먼저 입장하는 것을 떠올리면 이해가 빠를 것 같습니다.
용어
Enqueue: 큐에 데이터를 넣는 기능
Dequeue: 큐로부터 데이터를 꺼내는 기능
장점
파이썬 Queue 라이브러리에서 사용할 수 있는 class
▶Queue() : 가장 일반적인 큐 자료구조
▶LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조, last-in,first-out = Stack
▶PriorityQueue() : 데이터마다 우선순위를 넣어서 우선순위가 높은 순으로 데이터 출력이 가능
일반적인 큐의 코드 예제를 다음과 같이 작성해보았습니다.
queue.Queue() 부분에 class 이름을 수정하여 입력하면 라이브러리 내 다른 클래스도 활용하여 구현할 수 있습니다.
#일반 큐 구현
import queue
queue_ex = queue.Queue()
queue_ex.put('입력') #데이터 입력하기
queue_ex.put(1)
queue_ex.qsize() #큐에 있는 데이터 개수 확인하기
queue_ex.get() #데이터 꺼내기
PriorityQueue를 사용하면 우선순위를 지정, 즉 출력 순서를 사용자가 정해 줄 수도 있습니다.
#PriorityQueue 구현
import queue
ex_pq = queue.PriorityQueue()
ex_pq.put((10, '열번째'))#tuple 로 우선순위와 같이 입력해야한다. (우선순위/데이터 순서)
ex_pq.put((1, '데이터'))
ex_pq.put((5, '다섯번째'))
ex_pq.get() #우선순위가 높은 (숫자가 작은) 것부터 출력되므로 (1,'데이터')가 출력된다