รูปแบบการออกแบบ Python - คิว

Queue คือชุดของออบเจ็กต์ซึ่งกำหนดโครงสร้างข้อมูลอย่างง่ายตามขั้นตอน FIFO (Fast In Fast Out) และ LIFO (Last In First Out) การดำเนินการแทรกและลบเรียกว่า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()

เอาต์พุต

โปรแกรมข้างต้นสร้างผลลัพธ์ต่อไปนี้ -

Priority Queue คืออะไร

ลำดับความสำคัญคิวเป็นโครงสร้างข้อมูลคอนเทนเนอร์ที่จัดการชุดของระเบียนด้วยคีย์ที่สั่งซื้อเพื่อให้สามารถเข้าถึงระเบียนได้อย่างรวดเร็วด้วยคีย์ที่เล็กที่สุดหรือใหญ่ที่สุดในโครงสร้างข้อมูลที่ระบุ

จะใช้ลำดับความสำคัญได้อย่างไร?

การดำเนินการตามลำดับความสำคัญมีดังนี้ -

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

เอาต์พุต

โปรแกรมข้างต้นสร้างผลลัพธ์ต่อไปนี้ -