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 -