Зачем нужен future в asyncio
Python
Middle
Без компании
Зачем нужен future в asyncio
Ответы
`Future` в `asyncio` представляет собой объект, который хранит результат асинхронной операции, который может быть еще не готов. Это абстракция для отложенного результата, позволяющая проверять состояние операции (`pending`, `done`), устанавливать результат или исключение, а также добавлять колбэки на завершение.
Пример:
```
import asyncio
async def set_future_result(fut):
await asyncio.sleep(1)
fut.set_result("Готово!")
async def main():
loop = asyncio.get_running_loop()
fut = loop.create_future()
# Запускаем задачу, которая установит результат Future
asyncio.create_task(set_future_result(fut))
print(await fut) # Ожидаем результат
asyncio.run(main())
```
Ключевые моменты:
- `Future` используется для ручного управления асинхронными операциями
- Корутины и задачи (`Task`) внутри используют `Future`
- Позволяет связывать асинхронный код через колбэки или `await`
- Основной низкоуровневый строительный блок `asyncio`