Sobes.tech
Back to questions
Junior — Middle
51

Могли бы вы объяснить концепцию Future в библиотеке asyncio и её роль при работе с асинхронным кодом?

Answer from AI

sobes.tech AI

В asyncio в Python объект Future представляет собой обещание (placeholder) результата асинхронной операции, который появится в будущем.

Future — это низкоуровневый объект, который содержит состояние задачи: она может быть выполнена, отменена или ожидать результата. Он позволяет другим частям кода подписываться на событие завершения операции.

Когда вы запускаете корутину, она возвращает объект Future или Task (Task — подкласс Future), который можно ожидать с помощью await. Это позволяет не блокировать выполнение программы, а продолжать работу, пока результат не будет готов.

Пример использования Future:

import asyncio

async def main():
    loop = asyncio.get_running_loop()
    future = loop.create_future()

    # Симуляция завершения операции через 1 секунду
    loop.call_later(1, future.set_result, 'Результат готов')

    result = await future
    print(result)

asyncio.run(main())

Здесь Future служит контейнером для результата, который будет установлен позже, а await позволяет асинхронно ждать его появления.