* 출처: http://www.stoimen.com/blog/2012/06/05/computer-algorithms-stack-and-queue-data-structure/
일반적인 큐 외에 다양한 정책이 적용된 큐들이 있음
import queue
data_queue = queue.Queue() # 일반적인 FIFO정책인 큐가 만들어짐
data_queue.put("hello")
data_queue.put(1)
print(data_queue.qsize())
print(data_queue.get())
print(data_queue.qsize())
print(data_queue.get())
print(data_queue.qsize())
👉result
2
hello
1
1
0
import queue
data_queue = queue.LifoQueue() # 대문자 2개 조심
data_queue.put("hello")
data_queue.put(1)
print(data_queue.qsize())
print(data_queue.get())
👉result
2
1
import queue
data_queue = queue.PriorityQueue() # 대문자 2개 조심
data_queue.put((10, "korea"))
data_queue.put((5, 1))
data_queue.put((15, "china"))
print(data_queue.qsize())
print(data_queue.get())
print(data_queue.get())
👉result
3
(5, 1) # 튜플의 첫번째 원소가 priority(우선순위)를 의미한다.
(10, 'korea') # 우선순위가 높을수록 값이 낮아진다.
큐의 경우에는 장단점 보다는 (특별히 언급되는 장단점이 없음), 큐의 활용 예로 프로세스 스케쥴링 방식을 함께 이해해두는 것이 좋음
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)
print(len(queue_list))
print(dequeue())
print(dequeue())
print(dequeue())
👉result
10
0
1
2