홍열 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

https://visualgo.net/en/list

 

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