Python Design Patterns - Code

Queue è una raccolta di oggetti, che definiscono una struttura dati semplice seguendo le procedure FIFO (Fast In Fast Out) e LIFO (Last In First Out). Le operazioni di inserimento ed eliminazione sono denominateenqueue e dequeue operazioni.

Le code non consentono l'accesso casuale agli oggetti che contengono.

Come implementare la procedura FIFO?

Il seguente programma aiuta nell'implementazione di 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()

Produzione

Il programma di cui sopra genera il seguente output:

Come implementare la procedura LIFO?

Il seguente programma aiuta nell'implementazione della procedura 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()

Produzione

Il programma di cui sopra genera il seguente output:

Cos'è una coda prioritaria?

La coda prioritaria è una struttura di dati del contenitore che gestisce un set di record con le chiavi ordinate per fornire un accesso rapido al record con la chiave più piccola o più grande nella struttura dati specificata.

Come implementare una coda prioritaria?

L'implementazione della coda di priorità è la seguente:

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

Produzione

Il programma di cui sopra genera il seguente output: