줄을 서는 행위와 유사 하다.

가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조

음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장하는 것과 동일

큐는 FIFO(Fist-In,First-Out)또는 LILO(Last-In,Last-Out)방식으로써 스택을 꺼내는 순서가 반대다.

여기서 처음들어온 순부터 4,5,8 이 된다. 여기서 4를 꺼내면 5가 노란색으로 온다.

용어

Enqueue: 데이터를 넣는 기능

Dequeue:데이터를 꺼내는 기능

import queue

data_queue = queue.Queue()

data_queue.put("funcoding")
data_queue.put(1)

data_queue.qsize() //2   (데이터의 갯수 확인)

data_queue.get() //queue에서는 데이터를 꺼낼 수만 있지, 어떤 데이터를 꺼내달라는 요청을 못함.
//data_queue.get() 하면 먼저 넣은 'funcoding' 꺼내기

data_queue.qsize() //1

data_queue.get()  //두번째 값을 꺼낸다 즉, 1을 꺼낸다.

data_queue.qsize() //0이 된다.

LifoQueue()로 큐 만들기(LIFO)

import queue

data_queue = queue.LifoQueue()

data_queue.put("funcoding")
data_queue.put(1)

data_queue.qsize() //2

data_queue.get() //Lifoqueue는 Lifo이므로,마지막(1)부터 빠져나간다.

PriorityQueue()로 큐 만들기

각각의 데이터 마다, 우선순위 번호를 지정 가능하다. 데이터를 추출할 때는 가장 우선순위가 높은 데이터가 추출 하게끔 할 수 있다.

import queue

data_queue = queue.PriorityQueue()

data_queue.put((10,"korea")) //튜플로 해서 쌍으로 데이터를 넣게 되어 있다. 첫번째 값은 우선순위 두번째가 우선 순위다.
data_queue.put((5, 1)) //이렇게 삽입하면, 우선순위 5에 값은 1이다.
data_queue.put((15, "china"))

data_queue.qsize() //3

data_queue.get() //(5,1) //우선 순위가 낮은 것부터 나온다.
data_queue.get() //(10,'korea')

참고: 어디에 큐가 많이 쓰일까?

운영체제에서 멀티 테스킹을 구현하기 위해서 프로세스 스케쥴링 방식 구현하기 위해 많이 사용된다.

연습문제 1. 리스트 변수로 큐를 다루는 enqueue,dequeue 기능 구현해보기.

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)
  
  len(queue_list) // 10
  
  dequeue() 1부터 순차적으로 10까지 

 

 

 

참고:https://fastcampus.co.kr/

+ Recent posts