Queue

2. Queue

  • Enqueue, Dequeue
  • Library: queue -> Queue(), LifoQueue(), PriorityQueue() 제공
    • Enqueue = put
    • Dequeue = get
1
2
3
4
5
6
import queue

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

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

1
2
3
4
5
import queue
data_queue=queue.LifoQueue()
data_queue.put("funcoding")
data_queue.put(1)
data_queue.get()
1
1
1

- PriorityQueue()로 큐 만들기

1
2
3
4
5
6
7
import queue

data_queue=queue.PriorityQueue()
data_queue.put((10, "korea"))
data_queue.put((5,1))
data_queue.put((15, "china"))
data_queue.qsize()
1
3
1
1
1
1
data_queue.get()
1
(5, 1)
1
1
1
1
data_queue.get()
1
(10, 'korea')

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

  • 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용 (운영체제 참조)

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

1
2
3
4
5
6
7
8
9
queue_list=list()

def enqueue(data):
    queue_list.append(data)
    
def dequeue():
    data=queue_list[0]
    del queue_list[0]
    return data
1
2
for index in range(10):
    enqueue(index)
1
len(queue_list)
1
10
1
dequeue()
1
0

Ref: https://fun-coding.org/