问题描述:
在Windows平台使用标准库multiprocessing编写Python多进程程序时会出现这样的情况,直接执行源程序一切正常,但使用PyInstaller打包后无法创建子进程,一直在主进程中无限循环,直至耗尽资源而崩溃。
例如下面的程序,
使用PyInstaller进行打包,打包过程完全正常。
然后运行打包生成的exe文件,可以看到,程序一直在主进程中无限循环,并没有创建和执行子进程。
要想解决这个问题并不复杂,只需要导入和调用标准库multiprocessing中的函数freeze_support即可,把上面的程序修改如下:
然后重新打包并运行程序,打包后的exe程序就可以正常运行了。
经过修改以后,打包后的程序看上去似乎是正常执行的,但实际与直接执行源程序的结果并不完全相同。