Queue
- Python kursu
- Uzman
- Ders 27/47
- 5 dk
multiprocessing.Queue ile süreçler arası kuyruğu öğrenirsin.
multiprocessing.Queue nedir?
multiprocessing.Queue, süreçler arasında veri aktarmak için iş parçacığı güvenli bir FIFO kuyruğudur. .put() ile veri koyar, .get() ile alırsın.
Birden çok süreç aynı kuyruğa yazabilir ve okuyabilir; kuyruk iç kilitleme sıraları garanti eder. Bu, sürecin sonucunu ana programa iletmek için en yaygın yoldur. Örneğin bir işçi süreci q.put(sonuc) yapar, ana program q.get() ile sonucu alır. Kuyruk boşsa get veri gelene kadar bekler.
Queue ile veri aktarma
Bir Queue'yu hem ana program hem de işçi süreç kullanabilir. İşçi q.put(sonuc) ile sonuç koyar, ana program q.get() ile alır.
Önemli nokta: Queue bir argüman olarak sürece verilir. Process(target=worker, args=(q,)) yazarak kuyruğu geçirirsin. İşçi bu kuyruğa yazar, ana program okur. Kuyruk FIFO olduğu için ilk konan ilk alınır. Birden çok işçi aynı kuyruğa yazıyorsa sıra, yazma hızına bağlıdır; ama her öğe yalnızca bir kez alınır.
Uygulama Queue ile değer aktar
from multiprocessing import Queue ile içe aktar. q = Queue() ile kuyruk oluştur. q.put("bir") ve q.put("iki") ile iki değer koy. q.get() ile sırayla iki değeri al ve yazdır.
Başlangıç kodu
# kuyruk oluştur
# iki değer koy ve sırayla al
# yazdırÖrnek çözüm
from multiprocessing import Queue
q = Queue()
q.put("bir")
q.put("iki")
print(q.get())
print(q.get())Beklenen çıktı
bir iki
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Queue çağrısını tamamla
from multiprocessing import ____
q = Queue()
from multiprocessing import Queue
q = Queue()
Açıklama: Queue süreçler arası kuyruktur.
2 q.get() ne yapar?
q = Queue()
q.put(42)
val = q.get()- Kuyruğa değer koyar
- Kuyruktan bir değer alır Doğru cevap
- Kuyruğu siler
- Kuyruk boyutunu verir
Açıklama: get() kuyruğun başından bir değer alır.
3 Queue kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
put |
Değer koyar |
get |
Değer alır |
Queue |
FIFO kuyruk |
args=(q,) |
Kuyruğu geçirir |