Queue ist eine Thread-sichere Warteschlangenimplementierung (FIFO) in der Python-Standardbibliothek. Sie bietet eine First-In-First-Out-Datenstruktur, die für die Multithread-Programmierung geeignet ist Warteschlange, die in Produzenten verwendet wird Informationsübertragung zwischen Verbraucherthreads
Klasse Queue.Queue(maxsize=0)
FIFO ist Zuerst rein, zuerst raus, zuerst rein, zuerst raus. Queue stellt einen einfachen FIFO-Container bereit, der sehr einfach zu verwenden ist. maxsize ist eine Ganzzahl, die die Obergrenze der Anzahl der Daten angibt, die in der Warteschlange gespeichert werden können. Sobald das Limit erreicht ist, führen Einfügungen zu einer Blockierung, bis die Daten in der Warteschlange verbraucht sind. Wenn maxsize kleiner oder gleich 0 ist, gibt es keine Begrenzung für die Warteschlangengröße.
Zum Beispiel:
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()
Ausgabe:
01 2 3 4
Klasse Queue.LifoQueue(maxsize=0)
LIFO ist Last in First Out, last in first out. Ähnlich wie der Stack ist die Verwendung von maxsize die gleiche wie oben
Ein weiteres Beispiel:
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()
Ausgabe:
4 3 2 10
Sie können sehen, dass Sie einfach Queue.Quenu类
durch Queue.LifiQueue类
Klasse Queue.PriorityQueue(maxsize=0)
Erstellt eine Prioritätswarteschlange. Die Verwendung von maxsize ist die gleiche wie oben.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
entspricht put_nowait
put(item, False)
-Methode put
get(False)
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Python-Warteschlangenmoduls. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!