Sobes.tech
Middle

Asenkron programlama (async) nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Asenkron programlama, programın ana yürütme akışını engellemeden aynı anda birden fazla görevi yerine getirmeye olanak tanıyan bir paradigmadır. Bu, bekleme sürelerinin verimli kullanılmasıyla (örneğin, giriş/çıkış işlemleri sırasında) sağlanır.

Ana kavramlar:

  • Koruynlar: Yürütmeyi duraklatıp daha sonra devam ettirebilen özel fonksiyonlar. async def ile tanımlanır.
  • Olay Döngüsü: Koruynların yürütülmesini yöneten ana düzenleyici, olayları izler ve biri bekliyorsa görevler arasında geçiş yapar.
  • await: Bir koruynun yürütmesini, beklenen işlemin tamamlanmasına kadar duraklatmak için anahtar kelime (örneğin, başka bir koruyn çağırmak veya I/O sonucu beklemek).

Örnek:

// Asenkron fonksiyon örneği
import asyncio

async def fetch_url(url):
    print(f"İndirmeye başlıyor: {url}")
    await asyncio.sleep(2) // Uzun bir işlemin (örneğin, ağ isteği) simülasyonu
    print(f"İndirme tamamlandı: {url}")

async def main():
    # Koruynlardan görevler oluştur
    task1 = asyncio.create_task(fetch_url("http://example.com/page1"))
    task2 = asyncio.create_task(fetch_url("http://example.com/page2"))

    # Her iki görevin tamamlanmasını bekle
    await task1
    await task2

// Olay döngüsünü başlat
if __name__ == "__main__":
    asyncio.run(main())

Avantajlar:

  • Performans artışı: Özellikle I/O-bağlı görevler (ağ istekleri, dosya işlemleri) için.
  • Kaynakların daha iyi kullanımı: Birden fazla iş parçacığı veya süreç oluşturulmaz, bu da ek maliyetleri azaltır.
  • Yanıt verebilirliği koruma: Ana akış engellenmez, bu da etkileşimli uygulamalar veya sunucular için önemlidir.

Asenkron programlama şu durumlar için uygundur:

  • Web sunucuları (örneğin, asyncio veya FastAPI kullanılarak).
  • Web sitelerinin kazıma işlemleri.
  • Veritabanlarıyla çalışma.
  • Dış kaynakları bekleyen herhangi bir görev.