Python Glossary English

Python 3.2+concurrent.futuresфункция

concurrent.futures.wait()

пул задач

Ждёт набор Future до условия return_when (все, первый, первая ошибка) или таймаута и возвращает пару множеств (done, not_done).

Синтаксис

done, not_done = concurrent.futures.wait(fs, timeout=None, return_when=ALL_COMPLETED)

Возвращает множества, поэтому порядок задач теряется — нужен порядок, держите список future. Ошибки задач wait не поднимает: они ждут в result(). По таймауту TimeoutError нет, в отличие от as_completed, — просто непустой not_done, а незавершённые задачи сами не отменяются и продолжают работать.

Примеры

import time
from concurrent.futures import ThreadPoolExecutor, wait, FIRST_COMPLETED
with ThreadPoolExecutor() as ex:
    fast = ex.submit(time.sleep, 0.01)
    slow = ex.submit(time.sleep, 0.4)
    done, not_done = wait([fast, slow], return_when=FIRST_COMPLETED)
    print(fast in done, slow in not_done)  # → True True
from concurrent.futures import ThreadPoolExecutor, wait
with ThreadPoolExecutor() as ex:
    fs = [ex.submit(int, s) for s in ['1', 'x']]
    done, _ = wait(fs)  # ошибки здесь не всплывают
    print(len(done))  # → 2
    print(sum(f.exception() is not None for f in fs))  # → 1

См. также

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