Multiprocessing.freeze_support() - программирование
Подтвердить что ты не робот

Multiprocessing.freeze_support()

Почему модуль многопроцессорности должен вызывать конкретную функцию для работы при "замораживании" для создания исполняемого файла Windows?

4b9b3361

Ответ 1

Причина заключается в отсутствии fork() в Windows (не полностью верно). Из-за этого в Windows вилка моделируется созданием процесса new, в котором выполняется код, который выполняется в Linux в дочернем процессе. Поскольку код должен выполняться в технически несвязанных процессах, он должен быть доставлен туда до его запуска. Способ его доставки сначала заключается в мариновании, а затем отправляется через трубу от исходного процесса к новому. Кроме того, этот новый процесс информируется о том, что он должен запускать код, переданный по каналу, передавая ему аргумент командной строки --multiprocessing-fork. Если вы посмотрите реализация функции freeze_support(), его задача - проверить, должен ли выполняемый процесс запускать код по трубе или нет.