Python Glossary English

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

concurrent.futures.Executor

пул задач

Абстрактный базовый класс пулов исполнителей: общий интерфейс submit, map и shutdown для пулов потоков, процессов и интерпретаторов.

Синтаксис

def run_all(pool: concurrent.futures.Executor): ...  # submit, map, shutdown

Сам Executor ничего не исполняет — его submit поднимает NotImplementedError; создают наследника, а Executor пишут в аннотациях, чтобы пул можно было заменить. map отдаёт результаты в порядке входа, а не завершения, и первая ошибка задачи всплывает при переборе, обрывая его. shutdown(wait=False) не останавливает уже запущенные задачи: программа всё равно дождётся их перед выходом.

Примеры

from concurrent.futures import Executor, ThreadPoolExecutor
def squares(pool: Executor, data):
    return list(pool.map(lambda x: x * x, data))
with ThreadPoolExecutor() as pool:
    print(squares(pool, [3, 1, 2]))  # → [9, 1, 4]
from concurrent.futures import ThreadPoolExecutor
def inv(x):
    return 1 / x
with ThreadPoolExecutor() as pool:
    try:
        for r in pool.map(inv, [1, 0, 2]):
            print(r)
    except ZeroDivisionError:
        print('ошибка во второй задаче')  # → 1.0 / ошибка во второй задаче

См. также

Частые ошибки

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