Tutorial zur Python-Warteschlangendatenstruktur
Master-FIFO-Warteschlangenoperationen in Python. Führen Sie unser interaktives Warteschlangenbeispiel aus, das die Enqueue- und Dequeue-Methoden zeigt.
Übersicht
Eine Warteschlange ist eine lineare Datenstruktur, die nach dem First-In-First-Out-Prinzip (FIFO) arbeitet. Elemente werden hinten hinzugefügt (in die Warteschlange gestellt) und vorne entfernt (aus der Warteschlange entfernt), ähnlich wie bei einer Kasse in einem Geschäft.
Warteschlangen sind in der Informatik von entscheidender Bedeutung für die Bearbeitung von Aufgaben in der genauen Reihenfolge, in der sie eintreffen. Sie fungieren als Puffer, die Produzenten- und Konsumentenprozesse entkoppeln.
Python bietet mehrere Möglichkeiten zum Erstellen von Warteschlangen: Basislisten, das Modul „collections.deque“ für threadsichere schnelle Vorgänge und das Modul „queue.Queue“, das speziell für Multithread-Anwendungen entwickelt wurde.
Code- und Ausführungsausgabe
Eine interaktive FIFO-Warteschlange, die mithilfe von „collections.deque“ für effiziente Front-Removal-Vorgänge erstellt wurde.
from collections import deque
class Queue:
def __init__(self):
self.buffer = deque()
def enqueue(self, item):
self.buffer.append(item)
print(f"Enqueued: {item}")
def dequeue(self):
if self.is_empty():
return "Underflow: Queue is empty"
dequeued = self.buffer.popleft()
print(f"Dequeued: {dequeued}")
return dequeued
def is_empty(self):
return len(self.buffer) == 0
def size(self):
return len(self.buffer)
# Test the Queue
q = Queue()
q.enqueue("Customer 1")
q.enqueue("Customer 2")
q.enqueue("Customer 3")
print(f"Queue Size: {q.size()}")
q.dequeue()
q.dequeue()
print(f"Remaining in Queue: {list(q.buffer)}")Enqueued: Customer 1
Enqueued: Customer 2
Enqueued: Customer 3
Queue Size: 3
Dequeued: Customer 1
Dequeued: Customer 2
Remaining in Queue: ['Customer 3']Schrittweise Umsetzung
- Bearbeitung asynchroner Anfragen in Server-Web-Frameworks
- Job-Scheduling-Warteschlangen in Betriebssystemen
- Nachrichtenbroker und Warteschlangenpuffer (wie RabbitMQ oder Redis)
Häufig gestellte Fragen
Warum nicht list.pop(0) zum Entfernen aus der Warteschlange in Python verwenden?
Die Verwendung von „list.pop(0)“ ist langsam, da alle nachfolgenden Elemente im Speicher um einen Index nach links verschoben werden müssen, was zu einer O(n)-Leistung führt. Im Gegensatz dazu läuft „deque.popleft()“ in der konstanten Zeit O(1).
Was ist eine Prioritätswarteschlange?
Eine Prioritätswarteschlange ist eine Variante, bei der Elemente basierend auf einer zugehörigen Priorität und nicht auf der Grundlage der Ankunftsreihenfolge bereitgestellt werden. Python implementiert dies über das Modul „heapq“.
Verwandte Themen
Implementieren Sie einen LIFO-Stack in Python. Führen Sie unser interaktives Stack-Codebeispiel aus, um Push-, Pop-, Peek- und Kapazitätsgrenzen zu meistern.
Implementierung einer einfach verknüpften Python-ListeErfahren Sie, wie Sie eine einfach verknüpfte Liste in Python implementieren. Entdecken Sie die dynamische Speicherzuweisung, Knotenoperationen, Einfügung, Durchquerung und Löschung.