CodeBlanks Logo Icon CodeBlanks

Manager

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

main.py
# Manager ile paylaşılan liste oluştur
# değer ekle ve yazdır

Örnek çözüm

main.py
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?

main.py
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

Soru
from multiprocessing import ____
m = Manager()
Cevap
from multiprocessing import Manager
m = Manager()

Açıklama: Manager paylaşılan nesneler sağlar.

Uzman bölümündeki tüm dersler