我创建的GUI使用多进程。进程函数调用,通过使用多个进程更快地完成工作。
w1 = multiprocessing.Process(target = _process_worker.start)
当我将 GUI 作为 python 脚本运行时gui.py
我单击启动工人的按钮,一切正常,工作完成得更快,没有问题。
当我将 python 程序编译成窗口应用程序(使用 pyinstaller(时,单击相同的按钮会导致 GUI 启动自身的多个实例;也就是说,每次进行多进程调用时,gui 都会启动另一个 gui 应用程序。
pyinstaller.ex --onefile --windowed --icon=guiicon.ico gui.py
有谁知道我如何让进程只做工作而不是打开自身的多个实例?它首先为什么要这样做?
在使用multiprocessing
模块时,必须调用
multiprocessing.freeze_support()
紧跟在主模块的if __name__ == '__main__':
行之后。
请阅读有关multiprocessing.freeze_support的 Python 库手册以获取更多信息。
参考: https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing