Python 3.14+concurrent.futuresпонятие
concurrent.futures.InterpreterPoolExecutor
пул интерпретаторов
Пул потоков, где каждый рабочий поток исполняет задачи в своём изолированном подынтерпретаторе со своим GIL: настоящий параллелизм на ядрах без запуска процессов.
Синтаксис
concurrent.futures.InterpreterPoolExecutor(max_workers=None, thread_name_prefix='', initializer=None, initargs=())
Появился в 3.14. Функция и аргументы передаются в рабочий интерпретатор через pickle, и у него свои модули и свой __main__: изменения глобальных переменных скрипта там не видны, а функция, опирающаяся на глобальные имена скрипта, может не передаться вовсе (NotShareableError). Надёжнее всего самодостаточная функция с импортами внутри. Сторонние C-расширения без поддержки подынтерпретаторов в нём не импортируются.
Примеры
from concurrent.futures import InterpreterPoolExecutor
def square(n):
return n * n
with InterpreterPoolExecutor(max_workers=2) as ex:
print(list(ex.map(square, range(5)))) # → [0, 1, 4, 9, 16]
from concurrent.futures import InterpreterPoolExecutor
def check(n):
if n < 0:
raise ValueError('отрицательное')
return n
with InterpreterPoolExecutor(max_workers=1) as ex:
try:
ex.submit(check, -1).result()
except ValueError as e:
print(e) # → отрицательное
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности