Python 으로 시작하는 자료구조 - (2) 큐 (Queue)

이강호·2021년 3월 23일
0

대표적인 데이터구조: 큐 (Queue)

1. 큐 (Queue) 구조

2. 알아둘 용어

  • Enqueue: 큐에 데이터를 넣는 기능
  • Dequeue: 큐에서 데이터를 꺼내는 기능

3. 파이썬 queue 라이브러리 활용해서 큐 자료구조 사용하기

  • queue 라이브러리에는 다양한 큐 구조로 Queue(), LifoQueue(), PriorityQueue() 제공
  • 프로그램을 작성할 때 프로그램에 따라 적합한 자료 구조를 사용
    • Queue(): 가장 일반적인 큐 자료구조
    • LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조 (스택 구조)
    • PriorityQueue(): 데이터마다 우선순위를 넣어서, 우선순위가 높은 순으로 데이터 출력

-> 일반적인 큐 외에 다양한 정책이 적용된 큐들이 있음

3.1. Queue()로 큐 만들기 (가장 일반적인 큐, FIFO(First-In, First-Out)
import queue

data_queue = queue.Queue()
data_queue.put("test")
data_queue.put(1)
data_queue.qsize()
data_queue.get()
data_queue.qsize()
2
'test'
1

3.2. LifoQueue()로 큐 만들기 (LIFO(Last-In, First-Out))

import queue

data_queue = queue.LifoQueue()
data_queue.put("test")
data_queue.put(1)
data_queue.qsize()
data_queue.get()
2
1

3.3. PriorityQueue()로 큐 만들기

import queue

data_queue = queue.PriorityQueue()
data_queue.put((20, "pizza"))
data_queue.put((5, 3))
data_queue.put((15, "chicken"))
data_queue.qsize()
data_queue.get()
data_queue.get()
3
(5, 3)
(15, 'chicken')

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

  • 멀티태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용됨 (운영체제)
  • 큐는 장단점 보다는 (특별히 언급되는 장단점이 없음), 큐의 활용 예로 프로세스 스케쥴링 방식을 함꼐 이해해두는 것이 좋음

4. 프로그래밍 연습

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

queue_list = list()

def enqueue(data):
	queue_list.append(data)

def dequeue(data):
	data = queue_list[0]
    del queue_list[0]
    return data
profile
성장하는 데이터 엔지니어를 꿈꾸는 호리입니다.

0개의 댓글