为什么多处理模块在被“冻结”时需要调用特定的function才能工作,以生成windows可执行文件?
发布于 2013-08-13 04:17:38
原因是Windows上缺少fork() (这是not完全正确的)。因此,在Windows上,fork是通过创建一个新的进程来模拟的,在这个进程中运行的代码在Linux上在子进程中运行。由于代码将在技术上不相关的进程中运行,因此在运行之前必须将其交付到那里。它的传送方式是首先对其进行酸洗,然后通过管道将其从原始进程发送到新进程。此外,这个新进程被告知,它必须通过向其传递--multiprocessing-fork命令行参数来运行通过管道传递的代码。如果你看一下freeze_support()函数的implementation,它的任务是检查运行它的进程是否应该运行通过管道传递的代码。
https://stackoverflow.com/questions/13922597
复制相似问题