Могли бы вы объяснить концепцию 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 позволяет асинхронно ждать его появления.