Python Glossary English

Python 3.4+multiprocessingфункция

multiprocessing.get_start_method()

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

Возвращает имя способа запуска процессов: 'spawn', 'fork' или 'forkserver'. С allow_none=True вернёт None, если способ ещё не выбран.

Синтаксис

multiprocessing.get_start_method(allow_none=False)

Ловушка: вызов без allow_none=True не только читает, но и фиксирует глобальное умолчание, и следующий set_start_method() упадёт с RuntimeError «context has already been set». Умолчание зависит от ОС и версии: Windows — spawn, macOS — spawn с 3.8, Linux — fork до 3.13 и forkserver с 3.14. Поэтому код, проверенный на Linux до 3.14 с fork, ломается на macOS, Windows и новом Linux: ребёнок больше не наследует память родителя, и всё должно передаваться через pickle.

Примеры

import multiprocessing as mp
if __name__ == '__main__':
    print(mp.get_start_method(allow_none=True))  # → None
    print(mp.get_start_method())  # → ? forkserver на Linux с 3.14, fork раньше, spawn на Windows и macOS
    try:
        mp.set_start_method('spawn')
    except RuntimeError as e:
        print(e)  # → context has already been set

См. также

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