0Pricing
Python Academy · Ders

Korütinler ve Olay Döngüsü

async def ile korütinler tanımlayın ve bunları asyncio.run() ile çalıştırın.

Korütinler ve Olay Döngüsü, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

Eşzamanlılık Nedir

Asyncio, işbirlikçi eşzamanlılık sağlar: tek bir iş parçacığı, biri G/Ç beklerken görevler arasında geçiş yaparak birçok görevi yönetir.

# Traditional: blocking I/O holds the whole thread
# Asyncio: while waiting for I/O, run other coroutines

import asyncio

async def main():
    print("Hello")
    await asyncio.sleep(1)   # yield control
    print("World")

asyncio.run(main())

async def — Eş Yordam İşlevleri

async def ile tanımlanan işlevler eş yordam işlevleridir. Bunları çağırmak bir eş yordam nesnesi döndürür; işlevler yalnızca beklendiğinde veya zamanlandığında çalışır.

import asyncio

async def greet(name):
    return f"Hello, {name}"

result = asyncio.run(greet("Alice"))
print(result)   # Hello, Alice

Olay Döngüsü

Olay döngüsü, eş yordamların çalıştırılmasını yönetir. asyncio.run(coro) yeni bir olay döngüsü oluşturur, eş yordamı tamamlanana kadar çalıştırır ve ardından döngüyü kapatır.

import asyncio

async def compute():
    await asyncio.sleep(0)
    return 42

value = asyncio.run(compute())
print(value)   # 42

# For advanced use:
loop = asyncio.new_event_loop()
result = loop.run_until_complete(compute())
loop.close()

await Çalışmayı Duraklatır

await expr, expr (başka bir eş yordam veya gelecek nesnesi) tamamlanana kadar geçerli eş yordamı askıya alır. Bu sırada olay döngüsü diğer görevleri çalıştırır.

import asyncio

async def task(name, delay):
    print(f"{name} starting")
    await asyncio.sleep(delay)
    print(f"{name} done")

async def main():
    await task("A", 2)
    await task("B", 1)   # sequential here

asyncio.run(main())

asyncio.sleep()

asyncio.sleep(seconds), olay döngüsünü engellemeden geçerli eş yordamı belirtilen süre boyunca askıya alır.

import asyncio

async def heartbeat():
    while True:
        print("ping")
        await asyncio.sleep(1)

# asyncio.run(heartbeat())  # runs forever

asyncio.run() Giriş Noktası

asyncio.run(coro), standart üst düzey giriş noktasıdır. Çalışmakta olan bir olay döngüsünün içinden bunu asla çağırmayın.

import asyncio

async def main():
    print("running")

if __name__ == "__main__":
    asyncio.run(main())

Olay Döngüsünün İçinde Olup Olmadığını Denetleme

Bir döngünün zaten çalışıp çalışmadığını algılamak için asyncio.get_running_loop() kullanın (çalışmıyorsa RuntimeError oluşturur).

import asyncio

async def inner():
    loop = asyncio.get_running_loop()
    print(f"Loop: {loop}")

asyncio.run(inner())

Engelleyici Kodu Çalıştırma

loop.run_in_executor(None, func, *args) kullanarak CPU'ya bağlı veya G/Ç işlemlerini engelleyen kodu olay döngüsünü engellemeden çalıştırın.

import asyncio, time

def blocking():
    time.sleep(2)
    return "done"

async def main():
    loop = asyncio.get_event_loop()
    result = await loop.run_in_executor(None, blocking)
    print(result)

asyncio.run(main())

Eş Yordam Zincirleme

Eş yordamlar başka eş yordamları await edebilir ve bir zincir oluşturabilir. Her düzey tamamlandıkça denetim zincir boyunca aşağıya iner ve yukarı döner.

import asyncio

async def fetch_data():
    await asyncio.sleep(1)
    return {"value": 42}

async def process():
    data = await fetch_data()
    return data["value"] * 2

async def main():
    result = await process()
    print(result)   # 84

asyncio.run(main())

Eş Yordamları Belirleme

Çalışma zamanında asenkron işlevleri incelemek için asyncio.iscoroutine(obj) veya asyncio.iscoroutinefunction(func) kullanın.

import asyncio

async def my_coro():
    pass

print(asyncio.iscoroutinefunction(my_coro))   # True
coro = my_coro()
print(asyncio.iscoroutine(coro))              # True
coro.close()   # clean up the un-awaited coroutine

asyncio Hata Ayıklama Kipi

Beklenmemiş eş yordamları, yavaş geri çağrıları ve diğer sorunları algılamak için hata ayıklama kipini etkinleştirin: PYTHONASYNCIODEBUG=1 ayarını yapın veya asyncio.run işlevine debug=True aktarın.

import asyncio

async def main():
    pass

asyncio.run(main(), debug=True)

# Or:
# PYTHONASYNCIODEBUG=1 python script.py

Hızlı Kontrol

asyncio.run(coro) ne yapar?

Özet

Eş yordamları async def ile tanımlayın, asyncio.run() ile çalıştırın ve await ile askıya alın. Olay döngüsü eş yordamları işbirlikçi biçimde zamanlar; biri G/Ç beklerken diğerlerini çalıştırır.

Sıkça Sorulan Sorular

“Korütinler ve Olay Döngüsü” dersi ücretsiz mi?

Evet — “Korütinler ve Olay Döngüsü” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“Korütinler ve Olay Döngüsü” dersinde ne öğreneceğim?

async def ile korütinler tanımlayın ve bunları asyncio.run() ile çalıştırın. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Korütinler ve Olay Döngüsü” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Korütinler ve Olay Döngüsü
  2. await, Görevler ve Toplama
  3. Asenkron Bağlam Yöneticileri ve Yineleyiciler
  4. Üretim Ortamlarında Asenkron G/Ç Kalıpları
← Python Academy Sayfasına Dön