Python Kuyruk Veri Yapısı Eğitimi

Python'da FIFO kuyruk operasyonlarında uzmanlaşın. Kuyruğa alma ve kuyruktan çıkarma yöntemlerini gösteren etkileşimli kuyruk örneğimizi yürütün ve çalıştırın.

Editör'de deneyin

Genel Bakış

Kuyruk, İlk Giren İlk Çıkar (FIFO) ilkesine göre çalışan doğrusal bir veri yapısıdır. Bir mağazadaki kasa kuyruğuna benzer şekilde öğeler arkaya eklenir (enqueue) ve önden çıkarılır (dequeue).

Kuyruklar, bilgisayar bilimlerinde görevlerin tam olarak geldikleri sırayla işlenmesi açısından kritik öneme sahiptir. Üretici ve tüketici süreçlerini ayıran tampon görevi görürler.

Python, kuyruk oluşturmak için birden fazla yol sunar: temel listeler, iş parçacığı açısından güvenli hızlı işlemler için 'collections.deque' modülü ve çok iş parçacıklı uygulamalar için özel olarak tasarlanmış 'queue.Queue' modülü.

Kod ve Yürütme Çıkışı

Etkili önden kaldırma işlemleri için Collections.deque kullanılarak oluşturulmuş etkileşimli bir FIFO Kuyruğu.

queue_demo.py
Editör'de deneyin
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)}")
Terminal Çıkışı
Enqueued: Customer 1
Enqueued: Customer 2
Enqueued: Customer 3
Queue Size: 3
Dequeued: Customer 1
Dequeued: Customer 2
Remaining in Queue: ['Customer 3']

Adım Adım Uygulama

  • Sunucu web çerçevelerinde eşzamansız istekleri işleme
  • İşletim sistemlerinde iş planlama kuyrukları
  • Mesaj aracıları ve kuyruk arabellekleri (RabitMQ veya Redis gibi)

Sıkça Sorulan Sorular

Python'da sıradan çıkarmak için neden list.pop(0) kullanmıyorsunuz?

'list.pop(0)' kullanımı yavaştır çünkü bellekteki sonraki tüm öğelerin bir dizin sola kaydırılmasını gerektirir, bu da O(n) performansıyla sonuçlanır. Bunun tersine, `deque.popleft()` O(1) sabit zamanında çalışır.

Öncelik Sırası Nedir?

Öncelik kuyruğu, öğelerin varış sırası yerine ilgili önceliğe göre sunulduğu bir varyasyondur. Python bunu 'heapq' modülü aracılığıyla uygular.

İlgili Konular