Python Glossary English

Python 3.2+concurrent.futuresпонятие

concurrent.futures.Future

асинхронный результат

Объект, представляющий результат асинхронно выполняемой операции. Возвращается методом submit(). Позволяет проверить статус и получить результат.

Синтаксис

f = executor.submit(fn, *args)
f.result()   # блокирует до готовности
f.done()     # True если завершён
f.cancel()   # отменить, если ещё не запущен

Исключение внутри задачи не всплывает само: оно хранится в Future и выбрасывается только тогда, когда вы вызовете result() (или exception()). Если результат никто не спросил — ошибка пропадает бесследно, это классическая причина "поток ничего не сделал и молчит". И не вызывайте result() сразу в цикле подачи задач: это блокирует и превращает пул в последовательное выполнение — собирайте futures в список, а потом обходите их через as_completed().

Примеры

from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor() as ex:
    f = ex.submit(sum, range(1000))
    print(f.done())     # False или True
    print(f.result())   # 499500 — блокирует

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности