Pythonでは、queue
モジュールを使用して最大サイズを持つキューを実装することができます。このモジュールは、複数のプロデューサとコンシューマ間で情報を安全に交換するためのキューを実装しています。
queue
モジュールには、以下の3つのキュークラスが含まれています。
queue.Queue(maxsize=0)
: FIFO(先入れ先出し)キューのコンストラクタです。maxsize
はキューに配置できるアイテムの数の上限を設定する整数です。このサイズに達すると、キューのアイテムが消費されるまで挿入がブロックされます。maxsize
が0以下の場合、キューのサイズは無限大になります。queue.LifoQueue(maxsize=0)
: LIFO(後入れ先出し)キューのコンストラクタです。maxsize
とキューのサイズの無限大に関するルールはqueue.Queue
と同じです。queue.PriorityQueue(maxsize=0)
: 優先度キューのコンストラクタです。maxsize
とキューのサイズの無限大に関するルールはqueue.Queue
と同じです。最も低い値のエントリが最初に取得されます。
これらのキューは、エントリが取得される順序だけで異なり、内部的にはすべてロックを使用して競合するスレッドを一時的にブロックします。
また、collections
モジュールのdeque
を使用して最大長を持つキューを簡単に実装することもできます。
from collections import deque
# 最大長が3のキュー
q = deque(maxlen=3)
q.append(10)
q.append(20)
q.append(30)
# deque([10, 20, 30])
q.append(40)
# deque([20, 30, 40])
以上のように、Pythonでは最大サイズを持つキューを簡単に実装することができます。これらの知識を活用して、Pythonでのデータ処理をより効率的に行うことができます。.