홍열
2020. 10. 15. 08:25
728x90
Python에서 Queue에 대해서 정리
가장 먼저 넣은 것을 가장 먼저 꺼내는 구조
ex) 음식점에서 줄을 서는 행위, 먼저 줄 슨 사람이 먼저 받는다.
FIFO(First In - First Out) // LILO(Last In - Last Out)은 Stack 구조
4,3,2,1,5의 순서대로 Data를 넣고, 차례로 뺄때는
4
3
2
1
5
의 순서로 빠진다.
Data를 빼면 빠진 Data는 Queue에서 삭제된다.
Queue 용어
EnQueue : Queue에 Data를 넣는 기능
DeQueue : Queue에서 Data를 빼는 기능
참고할만한 Site
Queue를 클릭해서 보기
Python에서는 Queue 라이브러리를 지원한다.
Queue(), LifoQueue(), PriorityQueue()를 지원
Queue - 일반적인 구조
LifoQueue - Last In First Out, 마지막에 넣은 값이 가장 먼저 나온다.
PriorityQueue -
예제
1. Queue
import queue
data_queue = queue.Queue()
data_queue.put(1) #enQueue
data_queue.qsize() #Queue Size check
data_queue.get() #deQueue
data_queue.qsize()
2. LIFO Queue
#LiFO Queue
#Last In First Out , 마지막에 넣은 것이 가장 먼저 추출됨
import queue
data_queue = queue.LifoQueue()
data_queue.put(1)
data_queue.put(2)
data_queue.get() # 2가 먼저 나온다.
3. Priority Queue
import queue
data_queue = queue.PriorityQueue()
data_queue.put((10, "USA")) #튜플의 첫번째가 우선순위, 두번째가 값
data_queue.put((5, "CHINA"))
data_queue.put((1,"KOREA"))
data_queue.qsize()
data_queue.get() #KOREA가 출력
Queue는 어디에 많이 사용될까?
멀티태스킹을 위한 프로세스 스케쥴 방식을 구현하기 위해서 많이 사용됨
# list를 가지고 Queue를 구현
queue_list = list()
def enqueue(data):
queue_list.append(data)
def dequeue():
data = queue_list[0]
del queue_list[0]
return data