Manager
- Python kursu
- Uzman
- Ders 29/47
- 5 dk
multiprocessing.Manager ile paylaşılan durum öğrenirsin.
multiprocessing.Manager nedir?
multiprocessing.Manager süreçler arasında paylaşılan Python nesneleri oluşturur. Bir sunucu süreç başlatır; istemci süreçler proxy üzerinden nesnelere erişir.
Manager().list() paylaşılan bir liste, Manager().dict() paylaşılan bir sözlük verir. Bu nesneler üzerindeki her işlem sunucu sürece iletilir ve iş parçacığı güvenli yapılır. Düz list'in aksine, paylaşılan liste birden çok süreç tarafından güvenle değiştirilebilir. Bu, karmaşık paylaşılan durum için kullanışlıdır; ama düz iletişimden daha yavaştır.
Paylaşılan liste kullanımı
Bir Manager listesi, sıradan bir list gibi kullanılır. .append(), [i] ve len() çalışır; ama her işlem sunucu sürece gider.
Önemli: print(shared) proxy'yi yazdırır; gerçek listeyi görmek için list(shared) kullanırsın. Bir with Manager() as m: bloğu, blok sonunda sunucuyu otomatik kapatır. Bu, kaynak sızıntısını önler. Paylaşılan nesneler güçlüdür; ama her erişimin bir maliyeti olduğunu unutmamak gerekir.
Uygulama Manager ile paylaşılan liste
from multiprocessing import Manager ile içe aktar. with Manager() as m: bloğu aç. Blok içinde shared = m.list() ile paylaşılan liste oluştur. shared.append("a") ve shared.append("b") ile değer ekle. list(shared)'i yazdır.
Başlangıç kodu
# Manager ile paylaşılan liste oluştur
# değer ekle ve yazdırÖrnek çözüm
from multiprocessing import Manager
with Manager() as m:
shared = m.list()
shared.append("a")
shared.append("b")
print(list(shared))Beklenen çıktı
['a', 'b']
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Manager kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
Manager |
Paylaşılan nesne sunucusu |
m.list() |
Paylaşılan liste |
m.dict() |
Paylaşılan sözlük |
proxy |
Vekil erişim |
2 Manager().list() ne sağlar?
from multiprocessing import Manager
m = Manager()
shared = m.list()- Bir süreç nesnesi
- Sıradan bir Python listesi
- Süreçler arası paylaşılan liste Doğru cevap
- Bir kuyruk
Açıklama: Manager().list() süreçler arası güvenli bir liste döndürür.
3 Manager çağrısını tamamla
from multiprocessing import ____
m = Manager()
from multiprocessing import Manager
m = Manager()
Açıklama: Manager paylaşılan nesneler sağlar.