为什么在“冻结”以生成Windows可执行文件时,多处理模块需要调用特定功能才能工作?
原因是fork()
在Windows上缺少(这并非完全正确)。因此,在Windows上,通过创建一个
新 进程来 模拟 fork,在该 新
进程中,正在子进程中运行的代码在Linux中运行。由于代码将在技术上不相关的流程中运行,因此必须先将其交付那里才能运行。它的交付方式是先对其进行酸洗,然后通过管道将其从原始流程发送到新流程。另外,此新进程还必须通过传递--multiprocessing- fork
命令行参数来通知它必须运行管道传递的代码。如果你看一看实现的freeze_support()
函数的任务是检查正在运行的进程是否应该运行通过管道传递的代码。