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