Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: Future, asyncio, concurrent.futures, async, await

Что такое Future в Python?

Проверяет понимание асинхронного программирования в Python и концепции Future как объекта, представляющего результат отложенной операции.

Короткий ответ

Future — это объект, который представляет собой результат асинхронной операции, который может быть ещё не готов. Он используется в модулях asyncio и concurrent.futures для работы с отложенными вычислениями. Вы можете проверить, завершена ли операция, дождаться её результата или добавить callback. Future — это основа для работы с корутинами и пулами потоков.

Длинный ответ

Что такое Future в Python?

Future — это объект, который инкапсулирует асинхронное выполнение некоторой операции и предоставляет интерфейс для получения её результата, который может быть ещё не доступен в момент создания Future. Это ключевая абстракция для асинхронного программирования, позволяющая не блокировать поток выполнения, а продолжить работу, пока результат не будет готов.

Где применяется Future?

Future используется в двух основных контекстах:

  • concurrent.futures — для работы с пулами потоков (ThreadPoolExecutor) или процессов (ProcessPoolExecutor). Future возвращается при отправке задачи на выполнение.
  • asyncio — для работы с асинхронными корутинами. В asyncio Future — это низкоуровневый объект, который можно ожидать с помощью await, но чаще используются корутины и Task (подкласс Future).

Пример с concurrent.futures

from concurrent.futures import ThreadPoolExecutor
import time

def heavy_task(n):
    time.sleep(n)
    return f"Task {n} done"

with ThreadPoolExecutor() as executor:
    future = executor.submit(heavy_task, 2)
    print("Task submitted, doing other work...")
    result = future.result()  # блокирует до получения результата
    print(result)

Пример с asyncio

import asyncio

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

    # Имитация асинхронного результата
    async def set_result():
        await asyncio.sleep(1)
        future.set_result("Future resolved!")

    asyncio.create_task(set_result())
    result = await future
    print(result)

asyncio.run(main())

Вывод

Future — это фундаментальный строительный блок для асинхронного и параллельного программирования в Python. Его стоит применять, когда нужно выполнять длительные операции (сеть, ввод-вывод, вычисления) без блокировки основного потока, особенно в сочетании с пулами потоков или asyncio для создания отзывчивых и эффективных приложений.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Python

    Python

Ключевые слова

#Future

#asyncio

#concurrent.futures

#async

#await

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.