asyncio.run
- Python kursu
- İleri seviye
- Ders 26/83
- 5 dk
asyncio.run ile event loop'u öğrenirsin.
asyncio.run
asyncio.run, bir coroutine'i en üst düzeyden çalıştırır. Yeni bir olay döngüsü açar, coroutine'i bekler ve döngüyü kapatır.
import asyncio
async def main():
return 42
asyncio.run(main()) # 42asyncio.run bir programda bir kez çağrılır; genellikle main() coroutine'ini çalıştırmak için kullanılır. Aynı döngü içinde başka coroutine'ler await ile çalıştırılır.
Python 3.7+'da bu işlev standart hâle geldi; eski loop.run_until_complete kalıbı yerine tercih edilir.
Olay döngüsü yaşam döngüsü
asyncio.run arka planda bir olay döngüsü oluşturur. Bu döngü, bekleyen coroutine'leri sırayla yürütür; bir coroutine await noktasına gelince diğerlerine geçer.
Program sonunda döngü kapatılır; açık kalan kaynaklar temizlenir. asyncio.run'ı birden çok kez çağırmak pratik değildir; tek bir main coroutine içinde işleri örgütlemek daha iyidir.
İç içe asyncio.run çağrısı yapılamaz; zaten çalışan bir döngü içinde tekrar açmaya çalışırsan hata alırsın.
Uygulama asyncio.run ile main çalıştır
import asyncio ile başla. async def main() fonksiyonu return 42 yapsın. print(asyncio.run(main())) çağrısını ekle.
Başlangıç kodu
# asyncio modülünü içe aktar
# main adında bir coroutine tanımla; 42 döndürsün
# main çağrısının sonucunu asyncio.run ile yazdırÖrnek çözüm
import asyncio
async def main():
return 42
print(asyncio.run(main()))Beklenen çıktı
42
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 asyncio.run çağrısı
import asyncio
async def main():
return 42
print(____(main()))
import asyncio
async def main():
return 42
print(asyncio.run(main()))
Açıklama: asyncio.run(main()) main coroutine'ini en üstten çalıştırır.
2 asyncio.run parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
asyncio.run(main()) |
En üst çağrı |
main() |
Coroutine nesnesi |
event loop |
Yürüten döngü |
await |
Bekleme noktası |
3 asyncio.run bir programda kaç kez çağrılır?
- Genelde bir kez, en üstte Doğru cevap
- Her coroutine için bir kez
- Sınırsız, iç içe
- Hiç, yalnızca await kullanılır
Açıklama: asyncio.run genellikle programın en üstünde main() için bir kez çağrılır.