Sobes.tech
Middle

Какво е функцията create_task()?

sobes.tech AI

Отговор от AI

Функцията asyncio.create_task() създава обект Task и планира асинхронна функция (корутина) за изпълнение в цикъла на събитията на заден план. Тя връща обект Task, който може да се използва за получаване на резултата от корутината или за отменянето й.

import asyncio

async def my_coroutine():
    print("Корутина започна")
    await asyncio.sleep(1)
    print("Корутина приключи")
    return "Готово"

async def main():
    print("Създаване на задача")
    task = asyncio.create_task(my_coroutine())
    print("Задачата е създадена")

    # Могат да се изпълняват други операции, докато задачата работи
    await asyncio.sleep(0.5)
    print("Изпълняват се други операции")

    # Изчакване за завършване на задачата и получаване на резултата
    result = await task
    print(f"Резултат от задачата: {result}")

asyncio.run(main())

Основни характеристики:

  • Несинхронно изпълнение: Стартира корутината без да чака тя да приключи.
  • Връща Task: Позволява управление на изпълнението на стартираната корутина.
  • Планиране: Добавя корутината към цикъла на събитията за изпълнение.

Разлика от await my_coroutine():

create_task() await my_coroutine()
Не блокира нишката за изпълнение Блокира нишката до завършване
Връща обект Task Връща резултата от корутината
Позволява фоново изпълнение Последователно изпълнение

Използва се за паралелно (асинхронно) изпълнение на няколко корутини.