Pool
- Python kursu
- Uzman
- Ders 28/47
- 5 dk
multiprocessing.Pool ile süreç havuzunu öğrenirsin.
multiprocessing.Pool nedir?
multiprocessing.Pool bir süreç havuzudur. Birden çok görevi otomatik olarak süreçlere dağıtır; .map() ile bir fonksiyonu bir listenin tüm öğelerine uygular.
Örneğin Pool().map(func, [1, 2, 3]) üç öğeyi havuzdaki sürelere dağıtır ve [func(1), func(2), func(3)] sonucunu döndürür. with Pool() as p: bloğu havuzu otomatik kapatır. map giriş sırasını korur; bu yüzden çıktı deterministiktir. Bu, paralel haritalama için en pratik yoldur.
map ile paralel hesaplama
Pool().map(func, data) fonksiyonu data'nın her öğesine uygular. Süreç sayısı otomatik seçilir; genellikle CPU çekirdek sayısına eşittir.
Önemli: map giriş sırasını korur. [1, 2, 3] girişi [func(1), func(2), func(3)] çıktısı verir; hangi süreç önce bitirse bitsin sıra aynı kalır. Bu, deterministik sonuçlar sağlar. with bloğu kullanmadıysan p.close() ve p.join() ile havuzu kapatman gerekir.
Uygulama Pool ile kare hesapla
from multiprocessing import Pool ile içe aktar. square fonksiyonu tanımla; x * x döndürsün. with Pool() as p: bloğu içinde p.map(square, [1, 2, 3]) çağrısını result'a ata. result'u yazdır.
Başlangıç kodu
# kare fonksiyonu yaz
# Pool ile paralel hesapla
# sonucu yazdırÖrnek çözüm
from multiprocessing import Pool
def square(x):
return x * x
with Pool() as p:
result = p.map(square, [1, 2, 3])
print(result)Beklenen çıktı
[1, 4, 9]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Pool().map ne döndürür?
with Pool() as p:
result = p.map(func, [1, 2, 3])- Sonuçların listesi Doğru cevap
- Bir kuyruk
- Bir süreç nesnesi
- Tek bir değer
Açıklama: sonuçların listesi. map, her öğenin sonucunu sırayla listeler.
2 Pool kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
Pool |
Süreç havuzu |
map |
Paralel uygular |
with Pool() |
Otomatik kapatır |
func |
Uygulanan fonksiyon |
3 Pool map çağrısını tamamla
with Pool() as p:
result = p.____(square, [1, 2, 3])
with Pool() as p:
result = p.map(square, [1, 2, 3])
Açıklama: p.map(func, data) fonksiyonu paralel uygular.