
Pythonでキューを実装しよう!
キューは、FIFO(First In, First Out)方式でデータを管理するデータ構造です。プログラミングにおいて、キューは非常に基本的なデータ構造であり、タスクのスケジューリングやリソース管理などでよく使われます。この記事では、Pythonを使ってキューをゼロから実装し、その使い方や応用例を紹介します。
1. キューの基本操作
キューには次の基本操作があります
enqueue: 要素を追加する。
dequeue: 最初に追加した要素を取り出す。
isEmpty: キューが空かどうかを確認する。
2. キューの実装
Pythonでは、collectionsモジュールのdequeを用いてキューを簡単に実装できます。queue.pyというファイルにプログラムを書きましょう。
from collections import deque
class Queue:
def __init__(self):
self.items = deque()
def enqueue(self, element):
self.items.append(element)
def dequeue(self):
if not self.is_empty():
return self.items.popleft()
else:
raise IndexError("dequeue from empty queue")
def is_empty(self):
return len(self.items) == 0
3. キューの使い方
キューを使って、複数のタスクを順番に処理するプログラムを書いてみましょう。run.pyというファイルにプログラムを保存します。
from queue import Queue
def process_tasks(tasks):
queue = Queue()
# タスクをキューに追加する
for task in tasks:
queue.enqueue(task)
# キューが空になるまでタスクを処理する
while not queue.is_empty():
current_task = queue.dequeue()
print(f"Processing task: {current_task}")
# ここでタスクの処理を行う
if __name__ == "__main__":
tasks = ["Task 1", "Task 2", "Task 3"]
process_tasks(tasks)
4. 実行する
Pythonの環境構築は、こちらを確認してください。
下記のコマンドで、プログラムを実行します
python run.py
以下のように表示されれば成功です
Processing task: Task 1
Processing task: Task 2
Processing task: Task 3
まとめ
キューはシンプルですが、タスクのスケジューリングやリソース管理など多くの場面で使われます。Pythonを使えば、簡単に実装して応用できます。ぜひ試してみてください!