from queue import Queue from queue import PriorityQueue print("Queue類實現了一個基本的先進先出(FIFO)容器,使用put()將元素添加到序列尾端,get()從隊列尾部移除元素。\n") q = Queue() for i in range(3): q.put(i) while not q.empty(): print(q.get()) print("與標准FIFO實現Queue不同的是,LifoQueue使用后進先出序(會關聯一個棧數據結構)。\n") from queue import LifoQueue q1 = LifoQueue() for i in range(3): q1.put(i) while not q1.empty(): print(q1.get()) print("除了按元素入列順序外,有時需要根據隊列中元素的特性來決定元素的處理順序。例如,老板的打印任務可能比研發的打印任務優先級更高。PriorityQueue依據隊列中內容的排序順序(sort order)來決定那個元素將被檢索。") class Job(object): def __init__(self, priority, description): self.priority = priority self.description = description print('New job:', description) return def __lt__(self, other): return self.priority < other.priority q2 = PriorityQueue() q2.put(Job(5, 'Mid-level job')) q2.put(Job(10, 'Low-level job')) q2.put(Job(1, 'Important job')) # 數字越小,優先級越高 while not q2.empty(): next_job = q2.get() # 可根據優先級取序列 print('Processing job', next_job.description)