Sobes.tech
Back to questions
Junior — Middle
72

Можешь перечислить типы Awaitable объектов, используемых в asyncio?

Answer from AI

sobes.tech AI

В asyncio в Python Awaitable — это объект, который можно использовать с ключевым словом await. Основные типы Awaitable объектов:

  1. Coroutine (корутина) — функция, объявленная с async def, которая при вызове возвращает coroutine object. Его можно await для получения результата.

  2. Task (задача) — обёртка над coroutine, которая планируется на выполнение в event loop. Создаётся с помощью asyncio.create_task() или loop.create_task(). Task тоже Awaitable.

  3. 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, и к ним относятся корутины, задачи и фьючерсы.