CodeBlanks Logo Icon CodeBlanks

create_task

asyncio.create_task ile eşzamanlı görevleri öğrenirsin.

create_task

asyncio.create_task, bir coroutine'i arka planda çalışacak bir Task'e dönüştürür. Task, olay döngüsüne kaydedilir; await ile sonucunu beklersin.

async def main():
    t = asyncio.create_task(work())
    result = await t
    return result

create_task çağrıldığı an coroutine çalışmaya başlar; ama ana akış bloklanmaz. await t ile tamamlanmasını beklersin.

Birden çok task oluşturup asyncio.gather ile bekleyebilirsin; bu konu bir sonraki grupta.

Task yaşam döngüsü

Bir Task oluşturulduğunda olay döngüsüne kaydedilir ve mümkün olan en kısa sürede çalışmaya başlar. await ile bitmesini bekleyebilirsin; beklersen sonucu alırsın.

Task'ler iptal edilebilir: t.cancel() çağrısı Task'a CancelledError fırlatır. Bu, uzun süren işleri durdurmak için kullanılır.

Task tamamlandıktan sonra t.result() ile sonucu, t.exception() ile fırlattığı istisnayı alabilirsin.

Uygulama create_task ile arka plan task

import asyncio ile başla. async def work() fonksiyonu return 42 yapsın. async def main() içinde t = asyncio.create_task(work()) ile Task oluştur; return await t ile sonucu döndür. print(asyncio.run(main())) çağrısını ekle.

Başlangıç kodu

main.py
# asyncio modülünü içe aktar
# work adında bir coroutine tanımla; 42 döndürsün
# main adında bir coroutine tanımla; work'u Task olarak başlat, sonucunu bekle ve döndür
# main çağrısının sonucunu asyncio.run ile yazdır

Örnek çözüm

main.py
import asyncio

async def work():
    return 42

async def main():
    t = asyncio.create_task(work())
    return await t

print(asyncio.run(main()))

Beklenen çıktı

42

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 create_task çağrısı

Soru
import asyncio

async def main():
    t = asyncio.____(work())
    return await t
Cevap
import asyncio

async def main():
    t = asyncio.create_task(work())
    return await t

Açıklama: asyncio.create_task(work()) work coroutine'ini Task'a dönüştürür.

2 Task metotlarını eşleştir

Kavram Anlamı
create_task(coro) Task oluşturur
await t Tamamlanmasını bekler
t.cancel() İptal eder
t.result() Sonucu alır

3 asyncio.create_task ne zaman işe yarar?

  • Bir coroutine'i iptal etmek için
  • Bir coroutine'i hemen çalıştırmak için
  • Bir coroutine'i silmek için
  • Bir coroutine'i arka planda Task olarak yürütmek için Doğru cevap

Açıklama: create_task, coroutine'i arka planda yürütülen bir Task'a dönüştürür.

İleri seviye bölümündeki tüm dersler