concurrent.futures
- Python kursu
- Uzman
- Ders 34/47
- 5 dk
concurrent.futures.ThreadPoolExecutor ile havuz öğrenirsin.
concurrent.futures nedir?
concurrent.futures modülü, parçacık ve süreç havuzları için üst düzey bir arayüz sağlar. ThreadPoolExecutor parçacık havuzu oluşturur.
ex.submit(func) bir görev gönderir ve bir Future nesnesi döndürür. future.result() ile sonucu alırsın; hesaplama bitene kadar bekler. with ThreadPoolExecutor() as ex: bloğu havuzu otomatik kapatır. Bu, Thread ve Process'i elle yönetmekten daha pratiktir ve modern Python'un önerilen yoludur.
submit ve map
ThreadPoolExecutor iki ana yöntem sağlar: submit tek görev gönderir, map bir fonksiyonu listedeki her öğeye uygular.
submit daha esnektir; farklı fonksiyonlar ve argümanlar gönderebilirsin. map daha basittir; tek fonksiyonu bir veri listesine uygular ve sonuçları sırayla verir. Her ikisi de with bloğu içinde kullanılmalıdır. I/O yoğun işlerde (çok sayıda ağ isteği) ThreadPoolExecutor büyük hız artışı sağlar.
Uygulama ThreadPoolExecutor ile çalıştır
from concurrent.futures import ThreadPoolExecutor ile içe aktar. work fonksiyonu tanımla; "sonuc" döndürsün. with ThreadPoolExecutor() as ex: bloğu içinde future = ex.submit(work) yap ve print(future.result()) yaz.
Başlangıç kodu
# work fonksiyonu yaz
# havuz ile gönder ve sonucu alÖrnek çözüm
from concurrent.futures import ThreadPoolExecutor
def work():
return "sonuc"
with ThreadPoolExecutor() as ex:
future = ex.submit(work)
print(future.result())Beklenen çıktı
sonuc
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 concurrent.futures kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
ThreadPoolExecutor |
Parçacık havuzu |
submit |
Görev gönderir |
Future |
Sonuç vaadi |
result |
Sonucu alır |
2 future.result() ne yapar?
with ThreadPoolExecutor() as ex:
fut = ex.submit(func)
val = fut.result()- Sonucu döndürür, bitene kadar bekler Doğru cevap
- Görevi gönderir
- Havuzu kapatır
- Bir hata fırlatır
Açıklama: sonucu döndürür, bitene kadar bekler. submit görevi gönderir.
3 submit çağrısını tamamla
with ThreadPoolExecutor() as ex:
fut = ex.____(work)
with ThreadPoolExecutor() as ex:
fut = ex.submit(work)
Açıklama: ex.submit(func) bir görev gönderir.