Можешь перечислить типы Awaitable объектов, используемых в asyncio?
Answer from AI
sobes.tech AI
В asyncio в Python Awaitable — это объект, который можно использовать с ключевым словом await. Основные типы Awaitable объектов:
-
Coroutine (корутина) — функция, объявленная с
async def, которая при вызове возвращает coroutine object. Его можноawaitдля получения результата. -
Task (задача) — обёртка над coroutine, которая планируется на выполнение в event loop. Создаётся с помощью
asyncio.create_task()илиloop.create_task(). Task тоже Awaitable. -
Future (фьючерс) — объект, представляющий результат асинхронной операции, который будет доступен в будущем. В asyncio
Future— это низкоуровневый Awaitable, который можно вручную завершить или ожидать.
Пример:
import asyncio
async def coro():
await asyncio.sleep(1)
return 'result'
async def main():
# Coroutine
c = coro()
print(await c)
# Task
t = asyncio.create_task(coro())
print(await t)
# Future
f = asyncio.Future()
asyncio.get_event_loop().call_later(1, f.set_result, 'future result')
print(await f)
asyncio.run(main())
Таким образом, Awaitable — это объекты, которые можно ожидать с помощью await, и к ним относятся корутины, задачи и фьючерсы.