Python'da Asenkron İşleme

Python'da Asenkron İşleme

Bu makale Python'da asenkron işlemi açıklar.

Python'ın async/await ile asyncio modülünün temel kullanımına dair kod örneklerini öğrenebilirsiniz.

YouTube Video

Python'da Asenkron İşleme

Python'da eşzamansız (asenkron) işlem, dosya okuma-yazma veya ağ iletişimi gibi zaman alıcı G/Ç işlemlerini verimli bir şekilde gerçekleştirmek için kullanılan bir mekanizmadır. Senkron işlemede, bir sonraki işlem mevcut işlem bitene kadar bekler; ancak asenkron işlemde, bekleme süresince diğer görevlerle devam edebilirsiniz. Python'da, asenkron işlemler gerçekleştirmek için asyncio modülü sağlanmıştır. Burada, temel öğelerini ve nasıl kullanılacağını adım adım açıklayacağız.

Temel Sözdizimi

Asenkron işlemenin temelinde, coroutine (ko-rutin) adı verilen fonksiyonlar bulunur. async fonksiyonları asenkron fonksiyonları tanımlar ve await bu fonksiyonlar içerisindeki bir asenkron görevi beklemek için kullanılır.

 1import asyncio
 2
 3async def say_hello():
 4    print("Hello")
 5    await asyncio.sleep(1)
 6    print("World")
 7
 8if __name__ == "__main__":
 9    # Execute asynchronous task
10    asyncio.run(say_hello())
  • Yukarıdaki kodda, say_hello fonksiyonu bir asenkron görev olarak tanımlanmıştır. “sleep()” ile 1 saniye beklerken, diğer asenkron görevleri idam edilebilir.

Birden Fazla Görevin Yürütülmesi

“Toplayıcının” fonksiyonunu kullanarak, birden fazla görevi aynı anda çalıştırabilirsiniz.

 1import asyncio
 2
 3async def task1():
 4    print("Task 1 started")
 5    await asyncio.sleep(2)
 6    print("Task 1 completed")
 7
 8async def task2():
 9    print("Task 2 started")
10    await asyncio.sleep(1)
11    print("Task 2 completed")
12
13async def main():
14    await asyncio.gather(task1(), task2())
15
16if __name__ == "__main__":
17    asyncio.run(main())
  • Bu örnekte, task1 ve task2 eşzamanlı olarak çalıştırılır. Sonuç olarak, task2 iki görevden ilk tamamlanandır, ancak toplam yürütme süresi en uzun süren görevin toplam süresine eşittir.

Hata İşleme

Hata işleme, asenkron işlemde bile önemlidir. Standart try-except söz dizimini kullanarak hataları yakalayabilir ve işleyebilirsiniz.

 1import asyncio
 2
 3async def faulty_task():
 4    raise Exception("An error occurred")
 5
 6async def main():
 7    try:
 8        await faulty_task()
 9    except Exception as e:
10        print(f"Caught an error: {e}")
11
12if __name__ == "__main__":
13    asyncio.run(main())
  • Bu kod, asenkron fonksiyonlar içinde oluşan istisnaların try-except ile yakalanıp hata mesajlarının güvenli şekilde nasıl işlenebileceğini göstermektedir. faulty_task fonksiyonundan gelen istisna, main içinde yakalanarak uygun şekilde çıktılanmaktadır.

Özet

Python'da asenkron işlem; G/Ç beklerken diğer görevlerin de eşzamanlı olarak çalışmasını sağlamak için async / await ve asyncio kullanır, böylece verimli bir şekilde işlem yapılabilir. Birden fazla görevin eşzamanlı yürütülmesi ve asenkron G/Ç'nin avantajlarından yararlanarak, performansı büyük ölçüde artırabilirsiniz. Ayrıca, tıpkı normal try-except ile olduğu gibi hataları işleyebileceğiniz için, asenkron kodlarınızı güvenli bir şekilde çalıştırabilirsiniz.

Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.

YouTube Video