Pythonにはキューを実現する方法が3種類あります。
- list:
append()
とpop(0)
を利用します。ただし、Pythonのlistは内部的にはCの配列で実装されているため、この方法は遅いです。
def test_queue_list():
q = []
q.append(1)
q.append(2)
q.append(3)
v = q.pop(0)
assert v == 1
- collections.deque:
append()
とpopleft()
でキューを実現します。両端が終端のため、キューとしてもスタックとしても使えて便利、高速です。
from collections import deque
def test_queue_deque():
q = deque()
q.append(1)
q.append(2)
q.append(3)
v = q.popleft()
assert v == 1
- queue.Queue: 同期キュークラスで、スレッドセーフな実装です。
put()
とget()
を利用します。
import queue
def test_queue_Queue():
q = queue.Queue()
q.put(1)
q.put(2)
q.put(3)
v = q.get()
assert v == 1
これらの方法を理解し、適切な状況で適切な方法を選択することが重要です。