python - make - multiprocessing.freeze_support()
python make executable windows (1)
La razón es la falta de fork()
en Windows (lo cual not es del todo cierto). Debido a esto, en Windows se simula la bifurcación mediante la creación de un nuevo proceso en el que se ejecuta el código, que en Linux se ejecuta en un proceso secundario. Como el código debe ejecutarse en un proceso técnicamente no relacionado, debe entregarse allí antes de que pueda ejecutarse. La forma en que se entrega es primero que se decapen y luego se envían a través de la tubería del proceso original al nuevo. Además, este nuevo proceso está siendo informado de que tiene que ejecutar el código pasado por la tubería, pasando el argumento de línea de comando --multiprocessing-fork
a él. Si echa un vistazo a la implementation de la función freeze_support()
, su tarea es verificar si el proceso en el que se está ejecutando debe ejecutar el código que se pasa por canalización o no.
¿Por qué el módulo de multiprocesamiento necesita llamar a una function específica para que funcione cuando se "congela" para producir un ejecutable de Windows?