Junior — Middle
104
Kako se razlikuju metode create_task i await pri korišćenju modula AsyncIO u Pythonu?
Одговор од АИ
sobes.tech АИ
В модуле 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(...) выполнение будет последовательным.