Sobes.tech
Middle

Čo je funkcia create_task()?

sobes.tech AI

Odpoveď od AI

Funkcia asyncio.create_task() vytvára objekt Task a plánuje asynchrónnu funkciu (koreutínu) na vykonanie v slučke udalostí na pozadí. Vráti objekt Task, ktorý možno použiť na získanie výsledku koreutíny alebo na jej zrušenie.

import asyncio

async def my_coroutine():
    print("Koreutína začala")
    await asyncio.sleep(1)
    print("Koreutína skončila")
    return "Hotovo"

async def main():
    print("Vytváranie úlohy")
    task = asyncio.create_task(my_coroutine())
    print("Úloha vytvorená")

    # Môžu sa vykonávať iné operácie, zatiaľ čo úloha beží
    await asyncio.sleep(0.5)
    print("Iné operácie sa vykonávajú")

    # Čakanie na dokončenie úlohy a získanie výsledku
    result = await task
    print(f"Výsledok úlohy: {result}")

asyncio.run(main())

Hlavné vlastnosti:

  • Neblokujúce vykonávanie: Spúšťa koreutinu bez čakania na jej dokončenie.
  • Vráti Task: Umožňuje riadiť vykonávanie spustenej koreutíny.
  • Plánovanie: Pridáva koreutinu do slučky udalostí na vykonanie.

Rozdiel od await my_coroutine():

create_task() await my_coroutine()
Neblokuje vlákno vykonávania Blokuje vlákno do dokončenia
Vráti objekt Task Vráti výsledok koreutíny
Umožňuje bežať na pozadí Sekvenčné vykonávanie

Používa sa na paralelné (asynchrónne) vykonávanie viacerých koreutín.