Özet - Asyncio
- Python kursu
- İleri seviye
- Ders 36/83
- 5 dk
gather, Queue ve Semaphore'u birleştirerek bir web kazıyıcı yazarsın.
Özet - Asyncio
Bu grupta asyncio'nun eşzamanlı araçlarını gördün. gather hepsini bekler; wait done/pending kümeleri verir; Queue üretici-tüketici için; Lock kritik bölgeyi korur; Semaphore eşzamanlılık sınırını denetler.
Son görevde gather ve Semaphore'u bir arada kullanacaksın: Semaphore ile sınırlanmış birkaç coroutine'i gather ile bekleyeceksin.
Uygulama gather + Semaphore birleşimi
import asyncio ile başla. sem = asyncio.Semaphore(2) tanımla. async def fetch(n) fonksiyonu async with sem: bloğu içinde return n * 2 yapsın. async def main() içinde return await asyncio.gather(fetch(1), fetch(2), fetch(3)) çağrısı yapsın. print(asyncio.run(main())) çağrısını ekle.
Başlangıç kodu
# asyncio modülünü içe aktar
# iki izinli bir semafor tanımla (Semaphore, değer 2)
# fetch(n): async with sem içinde n değerini ikiye katla ve döndür
# main: gather ile üç fetch çağrısı, sonucu yazdırÖrnek çözüm
import asyncio
sem = asyncio.Semaphore(2)
async def fetch(n):
async with sem:
return n * 2
async def main():
return await asyncio.gather(fetch(1), fetch(2), fetch(3))
print(asyncio.run(main()))Beklenen çıktı
[2, 4, 6]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hepsinin tamamlanmasını bekleyen fonksiyon hangisi?
- asyncio.wait
- asyncio.Queue
- asyncio.gather Doğru cevap
- asyncio.Lock
Açıklama: asyncio.gather tüm coroutine'lerin tamamlanmasını bekler.
2 Özet: Semaphore
sem = asyncio.____(2)
sem = asyncio.Semaphore(2)
Açıklama: Semaphore(2) iki izinli semafor oluşturur.
3 Grup araçlarını eşleştir
| Kavram | Anlamı |
|---|---|
gather |
Hepsini bekler |
wait |
done/pending verir |
Queue |
Veri aktarır |
Semaphore |
İzin sayısını sınırlar |