Python Glossary English

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