地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Python】キュー

PythonでQueueを実装するには、標準ライブラリのqueueモジュールを使うのが一般的です。queue.Queueはスレッドセーフなキューの実装です。

以下は、基本的な使い方の例です:

import queue

# Queueの作成(デフォルトではFIFO)
q = queue.Queue()

# アイテムを追加(enqueue)
q.put(10)
q.put(20)
q.put(30)

# アイテムを取り出し(dequeue)
print(q.get())  # 10が出力されます
print(q.get())  # 20が出力されます

# キューが空かどうかを確認
print(q.empty())  # Trueになる、まだ取り出していないアイテムがない場合

# キューのサイズを確認
print(q.qsize())  # 現在のキューに入っているアイテムの数

主なメソッド: put(item):アイテムをキューの末尾に追加します。

get():キューの先頭からアイテムを取り出します。

empty():キューが空かどうかをチェックします。

qsize():キューに現在格納されているアイテムの数を返します。

もし、スレッドを使わずに簡単なQueueを自作したい場合、collections.dequeを使った方法もあります。

from collections import deque

class MyQueue:
    def __init__(self):
        self.queue = deque()
    
    def enqueue(self, item):
        self.queue.append(item)
    
    def dequeue(self):
        if self.is_empty():
            return None
        return self.queue.popleft()
    
    def is_empty(self):
        return len(self.queue) == 0
    
    def size(self):
        return len(self.queue)

# 使用例
q = MyQueue()
q.enqueue(10)
q.enqueue(20)
q.enqueue(30)

print(q.dequeue())  # 10
print(q.size())     # 2
print(q.is_empty()) # False