Python Glossary English

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

concurrent.futures.as_completed()

пул задач

Возвращает итератор, который отдаёт Future по мере их завершения — не в порядке создания, а в порядке готовности.

Синтаксис

from concurrent.futures import as_completed
for future in as_completed(fs): ...

Итератор отдаёт сами объекты Future, а не результаты, и порядок теряется — чтобы понять, к какому входу относится ответ, обычно заводят словарь future -> аргумент. Берите as_completed, когда хотите обрабатывать ответы по мере готовности; если нужен порядок исходных данных, проще executor.map(). Необязательный timeout отсчитывается от вызова as_completed, а не от каждой задачи по отдельности.

Примеры

from concurrent.futures import ThreadPoolExecutor, as_completed
import time, random
def task(n):
    time.sleep(random.random())
    return n * 2
with ThreadPoolExecutor() as ex:
    futures = [ex.submit(task, i) for i in range(5)]
    for f in as_completed(futures):
        print(f.result())  # выводит по мере готовности

См. также

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