asyncio vs threading
- Python kursu
- Uzman
- Ders 35/47
- 5 dk
asyncio ile threading farkını öğrenirsin.
asyncio vs threading
asyncio, tek bir parçacıkta eşzamanlı (concurrent) I/O işleri çalıştıran bir kütüphanedir. threading ise işletim sistemi parçacıkları kullanır.
asyncio'da async def ile eşzamanlı fonksiyon (coroutine) tanımlar, await ile I/O beklersin. Bu sırada olay döngüsü başka bir coroutine'e geçer. threading'de ise her parçacık kendi yürütme akışına sahiptir. asyncio, I/O yoğun sunucu uygulamalarında daha verimlidir; ama CPU yoğun işler için uygun değildir.
asyncio.run ile başlatma
Bir async def fonksiyonunu doğrudan çağıramazsın; bir olay döngüsü gerekir. asyncio.run(greet()) olay döngüsünü başlatır ve coroutine'i çalıştırır.
Bu, asyncio programlarının standart giriş noktasıdır. asyncio.run döngüyü oluşturur, coroutine'i çalıştırır, tamamlandığında döngüyü kapatır. Program boyunca yalnızca bir asyncio.run çağrısı yapılır. İçerde await ile başka coroutine'leri bekleyebilirsin.
Uygulama asyncio ile greet çağır
import asyncio ile modülü içe aktar. async def greet(): tanımla; print("async") yapsın. asyncio.run(greet()) ile çalıştır.
Başlangıç kodu
# async greet fonksiyonu yaz
# asyncio.run ile çalıştırÖrnek çözüm
import asyncio
async def greet():
print("async")
asyncio.run(greet())Beklenen çıktı
async
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 async tanımını tamamla
import asyncio
____ def greet():
print("async")
import asyncio
async def greet():
print("async")
Açıklama: async def ile coroutine tanımlanır.
2 asyncio vs threading kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
async def |
Coroutine |
await |
I/O bekler |
asyncio.run |
Olay döngüsü |
threading |
Parçacık |
3 asyncio hangi işlerde daha verimlidir?
- CPU yoğun hesaplamada
- I/O yoğun sunucu uygulamalarında Doğru cevap
- Tek parçacıklı basit programda
- Dosya sıkıştırmada
Açıklama: asyncio, I/O yoğun sunucu uygulamalarında threading'den daha verimlidir.