Maison >développement back-end >Tutoriel Python >Explication détaillée du module de file d'attente de Python
Queue est une implémentation de file d'attente thread-safe (FIFO) dans la bibliothèque standard Python. Elle fournit une structure de données premier entré, premier sorti adaptée à la programmation multithread, c'est-à-dire une. file d'attente, qui est utilisée dans les producteurs Transfert d'informations entre les threads consommateurs
class Queue.Queue(maxsize=0)
FIFO est Premier entré, premier sorti, premier entré, premier sorti. Queue fournit un conteneur FIFO de base, très simple à utiliser. maxsize est un entier, indiquant la limite supérieure du nombre de données pouvant être stockées dans la file d'attente. Une fois la limite atteinte, l'insertion provoquera un blocage jusqu'à ce que les données de la file d'attente soient consommées. Si maxsize est inférieur ou égal à 0, il n’y a aucune limite sur la taille de la file d’attente.
Par exemple :
1 import Queue2 3 q = Queue.Queue()4 5 for i in range(5):6 q.put(i)7 8 while not q.empty():9 print q.get()
Sortie :
01 2 3 4
class Queue.LifoQueue(maxsize=0)
LIFO est Dernier entré, premier sorti, dernier entré, premier sorti. Semblable à la stack, il est très simple à utiliser. L'utilisation de maxsize est la même que ci-dessus
Autre exemple :
1 import Queue2 3 q = Queue.LifoQueue()4 5 for i in range(5):6 q.put(i)7 8 while not q.empty():9 print q.get()
<.>Sortie :
4 3 2 10
par Queue.Quenu类
Queue.LifiQueue类
class Queue.PriorityQueue(maxsize=0)
Construction une file d'attente prioritaire. L'utilisation de maxsize est la même que ci-dessus.import Queueimport threadingclass Job(object):def __init__(self, priority, description): self.priority = priority self.description = descriptionprint 'Job:',descriptionreturndef __cmp__(self, other):return cmp(self.priority, other.priority) q = Queue.PriorityQueue() q.put(Job(3, 'level 3 job')) q.put(Job(10, 'level 10 job')) q.put(Job(1, 'level 1 job'))def process_job(q):while True: next_job = q.get()print 'for:', next_job.description q.task_done() workers = [threading.Thread(target=process_job, args=(q,)), threading.Thread(target=process_job, args=(q,)) ]for w in workers: w.setDaemon(True) w.start() q.join() 结果 Job: level 3 job Job: level 10 job Job: level 1 jobfor: level 1 jobfor: level 3 jobfor: job: level 10 job
équivaut à put_nowait
put(item, False)
put
get(False)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!