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(...) выполнение будет последовательным.