Python Glossary English

Python 3.4+multiprocessingфункция

multiprocessing.get_context()

способ запуска

Возвращает объект контекста с тем же набором имён, что у модуля (Process, Queue, Pool, Lock…), но привязанный к заданному способу запуска.

Синтаксис

ctx = multiprocessing.get_context(method=None)  # 'spawn' | 'fork' | 'forkserver'

Лучший способ выбрать spawn, fork или forkserver: в отличие от set_start_method(), он не трогает глобальное состояние, поэтому годится для библиотек и вызывается сколько угодно раз. Умолчание зависит от ОС и версии: Windows — spawn, macOS — spawn с 3.8, Linux — fork до 3.13 и forkserver с 3.14. Явный ctx = get_context('spawn') делает поведение одинаковым на всех ОС и избавляет от DeprecationWarning, который с 3.12 даёт fork из процесса с живыми потоками. Объекты разных контекстов не смешивайте: Queue одного и Process другого могут не сработать. Неизвестное имя — ValueError.

Примеры

import multiprocessing as mp
def square(x):
    return x * x
if __name__ == '__main__':
    ctx = mp.get_context('spawn')
    print(ctx.get_start_method())  # → spawn
    with ctx.Pool(2) as pool:
        print(pool.map(square, [1, 2, 3]))  # → [1, 4, 9]
import multiprocessing as mp
if __name__ == '__main__':
    try:
        mp.get_context('thread')
    except ValueError as e:
        print(e)  # → cannot find context for 'thread'
    print(mp.get_start_method(allow_none=True))  # → None — глобальное умолчание не тронуто

См. также

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