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.
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.
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']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
Python'da bir LIFO yığını uygulayın. Push, pop, peek ve kapasite sınırlarında uzmanlaşmak için etkileşimli yığın kodu örneğimizi çalıştırın.
Python Tek Bağlantılı Liste UygulamasıPython'da tek bağlantılı listenin nasıl uygulanacağını öğrenin. Dinamik bellek ayırmayı, düğüm işlemlerini, eklemeyi, geçişi ve silmeyi keşfedin.