[파이썬] 큐 (Queues)의 종류와 활용

파이썬에서 큐를 사용하기 위해서는 queue 모듈을 import 해야 합니다. queue 모듈은 다양한 큐 구현체를 제공하며, 각각의 구현체는 다양한 용도에 맞게 사용될 수 있습니다.

가장 기본적인 큐 구현체는 Queue 클래스입니다. 이는 스레드 세이프한 큐를 제공하며, 가장 일반적인 용도에 사용됩니다. 예를 들어, 여러 스레드가 동시에 큐에 데이터를 넣고 빼는 경우에 사용할 수 있습니다.

import queue

q = queue.Queue()

q.put("Apple")
q.put("Orange")
q.put("Banana")

print(q.get())  # Output: Apple
print(q.get())  # Output: Orange
print(q.get())  # Output: Banana

또한, 우선순위 큐(Priority Queue)를 구현하기 위해 PriorityQueue 클래스도 제공됩니다. 이는 데이터에 우선순위를 부여하여 추출할 때 우선순위가 높은 데이터를 먼저 추출할 수 있도록 합니다.

import queue

q = queue.PriorityQueue()

q.put((1, "Apple"))
q.put((3, "Orange"))
q.put((2, "Banana"))

print(q.get())  # Output: (1, 'Apple')
print(q.get())  # Output: (2, 'Banana')
print(q.get())  # Output: (3, 'Orange')

또 다른 유용한 큐 구현체로는 LIFO(Last-In-First-Out) 원칙을 따르는 LifoQueue 클래스도 제공됩니다.

import queue

q = queue.LifoQueue()

q.put("Apple")
q.put("Orange")
q.put("Banana")

print(q.get())  # Output: Banana
print(q.get())  # Output: Orange
print(q.get())  # Output: Apple

큐는 다양한 상황에서 유용하게 사용될 수 있습니다. 프로세싱할 작업들을 큐에 넣어 놓고 하나씩 처리하는 작업 큐로 사용할 수 있으며, 이벤트 처리나 멀티스레딩에서도 자주 활용됩니다. 큐를 적절히 활용하면 데이터의 처리를 효율적이고 구조화된 방식으로 처리할 수 있습니다.