create_task
- Python kursu
- İleri seviye
- Ders 29/83
- 5 dk
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 resultcreate_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
# 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
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ı
import asyncio
async def main():
t = asyncio.____(work())
return await t
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.