Python キュー データ構造のチュートリアル
Python で FIFO キュー操作をマスターします。エンキューおよびデキューのメソッドを紹介する対話型キューの例を実行してください。
概要
キューは、先入れ先出し (FIFO) 原則に基づいて動作する線形データ構造です。店舗のレジの列と同様に、要素は後部で追加され (エンキュー)、前部から削除されます (デキュー)。
キューは、到着した正確な順序でタスクを処理するためにコンピューター サイエンスにおいて重要です。これらは、プロデューサーとコンシューマーのプロセスを分離するバッファーとして機能します。
Python ではキューを構築するための複数の方法が提供されています。基本的なリスト、スレッドセーフな高速操作のための `collections.deque` モジュール、およびマルチスレッド アプリケーション専用に設計された `queue.Queue` モジュールです。
コードと実行の出力
効率的なフロント削除操作のために collections.deque を使用して構築された対話型 FIFO キュー。
queue_demo.py
エディターで試してみるfrom collections import deque
class Queue:
def __init__(self):
self.buffer = deque()
def enqueue(self, item):
self.buffer.append(item)
print(f"Enqueued: {item}")
def dequeue(self):
if self.is_empty():
return "Underflow: Queue is empty"
dequeued = self.buffer.popleft()
print(f"Dequeued: {dequeued}")
return dequeued
def is_empty(self):
return len(self.buffer) == 0
def size(self):
return len(self.buffer)
# Test the Queue
q = Queue()
q.enqueue("Customer 1")
q.enqueue("Customer 2")
q.enqueue("Customer 3")
print(f"Queue Size: {q.size()}")
q.dequeue()
q.dequeue()
print(f"Remaining in Queue: {list(q.buffer)}")端子出力
Enqueued: Customer 1
Enqueued: Customer 2
Enqueued: Customer 3
Queue Size: 3
Dequeued: Customer 1
Dequeued: Customer 2
Remaining in Queue: ['Customer 3']段階的な実装
- サーバー Web フレームワークでの非同期リクエストの処理
- オペレーティング システムのジョブ スケジューリング キュー
- メッセージ ブローカーとキュー バッファー (RabbitMQ や Redis など)
よくある質問
Python でのデキューに list.pop(0) を使用しないのはなぜでしょうか?
`list.pop(0)` を使用すると、メモリ内の後続のすべての要素を 1 インデックス左にシフトする必要があり、パフォーマンスが O(n) になるため遅くなります。対照的に、`deque.popleft()` は O(1) 定数時間で実行されます。
プライオリティキューとは何ですか?
優先キューは、要素が到着順序ではなく、関連付けられた優先順位に基づいて処理されるバリエーションです。 Python は、「heapq」モジュールを介してこれを実装します。