Pythonデザインパターン-キュー
キューはオブジェクトのコレクションであり、FIFO(高速入力高速出力)およびLIFO(後入れ先出し)手順に従って単純なデータ構造を定義します。挿入および削除操作は、enqueue そして dequeue 操作。
キューは、キューに含まれるオブジェクトへのランダムアクセスを許可しません。
FIFO手順を実装する方法は?
次のプログラムは、FIFOの実装に役立ちます-
import Queue
q = Queue.Queue()
#put items at the end of the queue
for x in range(4):
q.put("item-" + str(x))
#remove items from the head of the queue
while not q.empty():
print q.get()
出力
上記のプログラムは次の出力を生成します-
LIFO手順を実装する方法は?
次のプログラムは、LIFO手順の実装に役立ちます-
import Queue
q = Queue.LifoQueue()
#add items at the head of the queue
for x in range(4):
q.put("item-" + str(x))
#remove items from the head of the queue
while not q.empty():
print q.get()
出力
上記のプログラムは次の出力を生成します-
優先キューとは何ですか?
優先キューは、順序付けられたキーを使用して一連のレコードを管理し、指定されたデータ構造内の最小または最大のキーを使用してレコードにすばやくアクセスできるようにするコンテナデータ構造です。
優先キューを実装する方法は?
優先キューの実装は次のとおりです-
import Queue
class Task(object):
def __init__(self, priority, name):
self.priority = priority
self.name = name
def __cmp__(self, other):
return cmp(self.priority, other.priority)
q = Queue.PriorityQueue()
q.put( Task(100, 'a not agent task') )
q.put( Task(5, 'a highly agent task') )
q.put( Task(10, 'an important task') )
while not q.empty():
cur_task = q.get()
print 'process task:', cur_task.name
出力
上記のプログラムは次の出力を生成します-