Sobes.tech
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 await ile 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/await sö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.