Middle
Python'da coroutine nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Koruin, duruma devam edebilen ve duraklatabilen alt programların genelleştirilmesidir ve durumunu korur. Normal fonksiyonların aksine, bir çağrıdan sonra baştan sona kadar çalıştırılan fonksiyonlar yerine, korutinler başka bir korutina veya ana olay döngüsüne "kontrolü devredebilir" ve sonra durdurulduğu yerden "alabilir".
Python'da korutinler async def ve await anahtar kelimeleri kullanılarak uygulanır.
Ana özellikler:
- Duraklatma ve devam etme: Çalışmalarını duraklatabilir (
await) ve daha sonra devam ettirilebilir. - Durumun korunması: Duraklatıldıktan sonra, yerel değişkenlerinin durumu ve yürütme noktası korunur.
- Açık kontrol: Kontrol aktarımı açıkça
awaitile yapılır. - Bloklamayan giriş/çıkış: Sık sık bloklamayan giriş/çıkış işlemleri (örneğin, ağ istekleri) yapmak için kullanılır, thread veya süreç kullanmadan.
Söz dizimi:
// Asenkron fonksiyon (korutin) tanımı
async def my_coroutine():
print("Koruinin başlangıcı")
await some_async_operation() // Asenkron işlemin tamamlanmasını bekler
print("Bekledikten sonra koruinin devamı")
// Koruinin çağrılması
import asyncio
async def main():
await my_coroutine() // Koruinin çalıştırılması
# Ana olay döngüsünü başlat
asyncio.run(main())
Avantajlar:
- Performans: Bekleme ile ilgili görevler (örneğin, I/O Bound) için thread'lere kıyasla sistem kaynaklarını daha verimli kullanır.
- Okunabilirlik:
async/awaitsözdizimi, asenkron kodu senkron koda daha yakın hale getirir ve okunabilirliği artırır. - Rekabet: Thread yönetimi karmaşası olmadan görevlerin kolayca eşzamanlı yürütülmesini sağlar.
Koruınler, Python'da asenkron programlamanın temel bir parçasıdır ve asyncio, aiohttp ve FastAPI gibi framework'lerde kullanılır.