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Сообщить о неточности