【发布时间】:2019-08-14 00:27:35
【问题描述】:
我正在尝试将使用multiprocessing 的脚本编译成Windows 可执行文件。起初,当我将其编译为可执行文件时,我遇到了与 Why python executable opens new window instance when function by multiprocessing module is called on windows 相同的问题。按照接受的答案,我调整了我的脚本,以便
from multiprocessing import freeze_support
# my functions
if __name__ == "__main__":
freeze_support()
# my script
当作为脚本运行时,这再次完美运行。但是,当我编译并运行它时,我遇到:
我在错误的绿色部分加下划线。这个具体的行是指
freeze_support()
在我的脚本中。此外,这一行实际上并没有遇到它,但是当我的脚本进入多进程时,它类似于:
p = multiprocessing.Process(target=my_function, args=[my_list])
p.start()
p1 = multiprocessing.Process(target=my_function, args=[my_list])
p1.start()
p.join()
p1.join()
这是多处理模块中的错误(特别是第 148 行)还是我误解了我链接的答案,或者其他什么?
我还要注意,脚本在编译时确实可以正常工作,但是对于每个生成的多进程(很多),您必须在错误消息上单击“确定”,并且每个错误消息都是完全相同的。这是否意味着我使用p.join() 不正确地结束了该过程?
我也尝试了Python 3.4 multiprocessing does not work with py2exe 的解决方案,建议添加
multiprocessing.set_executable(os.path.join(sys.exec_prefix, 'pythonw.exe'))
到您的脚本,但这会导致以下脚本形式出现错误(甚至尚未编译):
FileNotFoundError: [WinError 2] 系统找不到指定的文件
感谢您的帮助!
freeze_support 文档:https://docs.python.org/2/library/multiprocessing.html#multiprocessing.freeze_support
【问题讨论】:
标签: python python-3.x windows multiprocessing cx-freeze