Python Tasarım Modelleri - Kuyruklar

Kuyruk, FIFO (Hızlı Giriş Hızlı Çıkış) ve LIFO (Son Giren İlk Çıkar) prosedürlerini izleyen basit bir veri yapısını tanımlayan bir nesneler koleksiyonudur. Ekleme ve silme işlemleri,enqueue ve dequeue operasyonlar.

Kuyruklar, içerdikleri nesnelere rastgele erişime izin vermez.

FIFO prosedürü nasıl uygulanır?

Aşağıdaki program FIFO'nun uygulanmasına yardımcı olur -

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()

Çıktı

Yukarıdaki program aşağıdaki çıktıyı üretir -

LIFO prosedürü nasıl uygulanır?

Aşağıdaki program LIFO prosedürünün uygulanmasına yardımcı olur -

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()

Çıktı

Yukarıdaki program aşağıdaki çıktıyı üretir -

Öncelik Sırası nedir?

Öncelik kuyruğu, belirtilen veri yapısındaki en küçük veya en büyük anahtarla kayda hızlı erişim sağlamak için sıralı anahtarlarla bir dizi kaydı yöneten bir kapsayıcı veri yapısıdır.

Öncelik kuyruğu nasıl uygulanır?

Öncelik kuyruğunun uygulanması aşağıdaki gibidir -

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

Çıktı

Yukarıdaki program aşağıdaki çıktıyı üretir -