windows中 python 使用multiprocessing 后 调试正常 打包成exe 内存不足应该怎么改写
时间: 2023-06-19 18:02:57 浏览: 163
修改exe文件,使进程支持3GB内存
在 Windows 中使用 `multiprocessing` 模块时,由于 Windows 的限制,无法使用 `fork()` 系统调用,因此 `multiprocessing` 在 Windows 中使用了 `spawn` 或 `forkserver` 两种方式来创建新进程,这样会导致子进程中的内存空间与主进程不共享,因此会出现内存不足的情况。
为了解决这个问题,可以尝试以下方法:
1. 通过调整 `processes` 参数来降低同时运行的进程数,从而减小内存占用量。
2. 尝试使用 `pathos.multiprocessing` 模块,它提供了一种更高级的进程池实现,并且可以在 Windows 中使用 `fork()` 系统调用。使用 `pathos.multiprocessing` 模块的示例代码如下:
```python
from pathos.multiprocessing import ProcessPool
def func(x):
# your function here
if __name__ == '__main__':
pool = ProcessPool(nodes=4)
results = pool.map(func, range(10))
```
3. 尝试使用 `pyinstaller` 打包成 exe 后,可以通过设置 `--no-patched-crypto` 参数来避免一些内存占用问题。使用命令:
```
pyinstaller --no-patched-crypto your_script.py
```
进行打包即可。
希望这些方法能帮助你解决问题。
阅读全文