CodeBlanks Logo Icon CodeBlanks

concurrent.futures

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

main.py
# work fonksiyonu yaz
# havuz ile gönder ve sonucu al

Örnek çözüm

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

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

Soru
with ThreadPoolExecutor() as ex:
    fut = ex.____(work)
Cevap
with ThreadPoolExecutor() as ex:
    fut = ex.submit(work)

Açıklama: ex.submit(func) bir görev gönderir.

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