Asenkron Programlama ve Python’da Asenkron Fonksiyonların Kullanımı

Bünyamin Ergen
3 min readAug 8, 2023

--

Geleneksel programlama yaklaşımında, kod adımlarının sırayla çalıştığı senkron bir işleyiş modeli bulunmaktadır. Yani bir fonksiyon veya işlem tamamlanmadan bir sonraki adıma geçilmez. Ancak, bu yaklaşım bazı durumlarda (örn. ağ istekleri, dosya işlemleri) uygulamanın gereksiz yere beklemesine neden olabilir. İşte bu sorunları aşmak için asenkron programlama devreye girer.

Asenkron Programlama Nedir?

Asenkron programlama, bir işlemin tamamlanmasını beklemeden diğer işlemlere devam edebilmek için tasarlanmış bir yaklaşımdır. Özellikle I/O bağlantılı işlemlerde, asenkronluk sayesinde bir işlemin bekleme süresi boyunca diğer işlemler gerçekleştirilebilir.

Python ve Asenkron Fonksiyonlar

Python, async/await dil özellikleriyle asenkron programlamayı destekler.

Bir fonksiyonu asenkron hale getirmek için async def kullanılır:

async def ornek_fonksiyon():
print("Asenkron fonksiyon çalışıyor!")

Ancak bu fonksiyonu doğrudan çağırmak sadece bir coroutine nesnesi döndürür. Bu nesneyi çalıştırmak için asenkron bir ortam gereklidir.

await anahtar kelimesi, asenkron fonksiyonun içerisinde başka asenkron işlemleri bekleme olmaksızın çağırmamıza olanak tanır:

import asyncio
async def bekle_ve_yaz():
await asyncio.sleep(1)
print("1 saniye bekledikten sonra bu yazıldı!")

Neden Asenkron Programlama?

Bir uygulamanın performansını artırmak için asenkron programlama oldukça etkilidir. Özellikle çok sayıda I/O işlemi olan senaryolarda, asenkron programlama ile bu işlemleri paralel olarak yürüterek beklemeleri azaltabilir ve böylece uygulamanın toplam çalışma süresini kısaltabiliriz.

Asenkron Programlama: Gerçek Zamanlı Uygulamalarda Nasıl Kullanılır?

Günümüzün hızlı ve kesintisiz internet bağlantısıyla, kullanıcılar artık gerçek zamanlı deneyimlere daha fazla ihtiyaç duyuyor. Asenkron programlama, bu talebi karşılamak için ideal bir yaklaşım sunar. Bu makalede, asenkron programlamanın temellerini ve gerçek zamanlı uygulamalarda nasıl kullanılabileceğini ele alacağız.

Gerçek Zamanlı Uygulamalarda Asenkron Programlama

Gerçek zamanlı uygulamalar, kullanıcıya sürekli ve kesintisiz bir deneyim sunar. Bu tür uygulamalar, asenkron programlama sayesinde daha etkili bir şekilde çalışabilir.

Örneğin, bir sohbet uygulaması düşünün. Bir kullanıcının mesajı, diğer kullanıcılara neredeyse anında iletilmelidir. Bu tür gerçek zamanlı işlemler, asenkron programlama sayesinde daha hızlı ve etkili bir şekilde gerçekleştirilir.

Real Time Communication

Websocket ile Asenkron Programlama

Websocket, gerçek zamanlı uygulamalar için mükemmel bir araçtır. Websocket ile sunucu ve istemci arasında sürekli bir bağlantı kurulabilir ve bu sayede veri iki yönlü olarak aktarılabilir.

Python’da websockets kütüphanesi, asenkron olarak Websocket sunucusu oluşturmamıza olanak tanır:

import asyncio
import websockets
async def echo(websocket, path):
async for message in websocket:
await websocket.send(f"Echo: {message}")
start_server = websockets.serve(echo, "localhost", 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

Bu basit sunucu, gelen her mesajı geri yollar.

Sonuç

Asenkron programlama, modern yazılım geliştirme süreçlerinin ayrılmaz bir parçası haline gelmiştir. Python’da async/await yapısı ve asyncio kütüphanesi ile bu yaklaşımı etkili bir şekilde uygulamak mümkündür. Bu model, performansı artırma, ölçeklendirme ve hızlı yanıt süreleri elde etme konusunda büyük avantajlar sağlar.

Python’da asenkron programlama, gerçek zamanlı uygulamalar ve I/O yoğun görevler için mükemmel bir araçtır. websockets kütüphanesi, asenkron websocket sunucuları ve istemcileri oluşturmak için kullanışlı ve etkili bir yol sunar. Bu sayede, gerçek zamanlı uygulamalarınızı Python ile kolayca geliştirebilirsiniz.

--

--

No responses yet