Sobes.tech
Back to questions
Junior — Middle
75

Как отличаются методы create_task и await при использовании модуля AsyncIO в Python?

Answer from AI

sobes.tech AI

В модуле AsyncIO в Python create_task и await выполняют разные функции, связанные с асинхронным выполнением кода:

  • asyncio.create_task(coro) — запускает корутину coro как отдельную асинхронную задачу, которая выполняется параллельно с остальным кодом. Возвращает объект задачи (Task), который можно сохранить и позже ожидать или отменить.

  • await — используется для приостановки выполнения текущей корутины до завершения другой корутины или awaitable объекта. То есть, await заставляет ждать результат, не блокируя поток.

Пример:

import asyncio

async def say_after(delay, message):
    await asyncio.sleep(delay)
    print(message)

async def main():
    task = asyncio.create_task(say_after(2, "Hello"))  # Запускаем задачу параллельно
    print("Задача запущена")
    await task  # Ждем завершения задачи
    print("Задача завершена")

asyncio.run(main())

Здесь create_task запускает say_after в фоне, а await task ожидает её завершения. Без create_task и просто с await say_after(...) выполнение будет последовательным.