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()
输出
上述程序产生了以下输出 –
如何实现后进先出的程序
下面的程序有助于实现后进先出的程序:
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
输出
上述程序产生了以下输出 –