码迷,mamicode.com
首页 > 编程语言 > 详细

pyinstaller打包多线程代码,运行死循环?

时间:2021-01-06 11:56:17      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:提示   other   support   test   not   cti   google   __name__   multi   

描述现象

用pyinstaller打包了一个上传文件的脚本,里面有多个input在while循环内,然后启用了多线程上传,在编辑器中运行没问题,但是打包完后,就一直循环提示你input...

解决

在google了一段时间后,发现需要在执行入口之前调用

multiprocessing.freeze_support()      # here

然后程序的运行就正常了。

python官网解释

multiprocessing.freeze_support()

Add support for when a program which uses multiprocessing has been frozen to produce a Windows executable. (Has been tested with py2exe, PyInstaller and cx_Freeze.)

One needs to call this function straight after the if name == ‘main‘ line of the main module. For example:

from multiprocessing import Process, freeze_support
def f():
    print(‘hello world!‘)

if __name__ == ‘__main__‘:
    freeze_support()
    Process(target=f).start()
If the freeze_support() line is omitted then trying to run the frozen executable will raise RuntimeError.

Calling freeze_support() has no effect when invoked on any operating system other than Windows. In addition, if the module is being run normally by the Python interpreter on Windows (the program has not been frozen), then freeze_support() has no effect.

pyinstaller打包多线程代码,运行死循环?

标签:提示   other   support   test   not   cti   google   __name__   multi   

原文地址:https://www.cnblogs.com/cpl9412290130/p/14224550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!