Ответ
awaitable-объект в asyncio — это любой объект, который можно использовать в выражении await. Существует три основных типа:
-
Корутина (Coroutine) Это результат вызова асинхронной функции, определенной через
async def. Сама по себе корутина ничего не выполняет, пока ее не запустят с помощьюawaitили не обернут вTask.import asyncio async def my_coroutine(): print("Coroutine is running") return 42 # my_coroutine() создает объект корутины, но не выполняет код внутри coro = my_coroutine() # await запускает выполнение result = await coro -
Задача (Task) Это объект, который планирует выполнение корутины в цикле событий
asyncio. Задачи позволяют запускать корутины конкурентно (параллельно). Создаются с помощьюasyncio.create_task().task = asyncio.create_task(my_coroutine()) # Можно выполнять другие действия, пока task работает в фоне await task -
Объект Future Низкоуровневый
awaitable-объект, представляющий конечный результат асинхронной операции. Обычно используется не в прикладном коде, а разработчиками библиотек для управления состоянием операций (ожидание, завершение, ошибка).
Ключевое различие: корутины — это "рецепты" асинхронных операций, а Task — это то, что запускает их выполнение в цикле событий.