CodeBlanks Logo Icon CodeBlanks

Özet - Asyncio

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

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

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

Soru
sem = asyncio.____(2)
Cevap
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

İleri seviye bölümündeki tüm dersler