Python Glossary English

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

concurrent.futures.Executor.submit()

пул задач

Отправляет вызов функции на выполнение в пул и немедленно возвращает объект Future, не дожидаясь результата.

Синтаксис

future = executor.submit(fn, *args, **kwargs)

Классическая ошибка — написать ex.submit(fn(x)): функция при этом выполняется прямо здесь, в пул уходит уже готовое значение. Аргументы передаются отдельно: ex.submit(fn, x). Второе — submit никогда не бросает исключение задачи: оно сохраняется в Future и поднимется при вызове result(), поэтому пул, у которого результаты не забирают, глотает ошибки молча.

Примеры

from concurrent.futures import ThreadPoolExecutor
def greet(name):
    return f'Привет, {name}!'
with ThreadPoolExecutor() as ex:
    f1 = ex.submit(greet, 'Артём')
    f2 = ex.submit(greet, 'Python')
    print(f1.result())  # Привет, Артём!
    print(f2.result())

См. также

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