Sivo 悉见

python打包成exe文件后很卡,python程序开子进程打包成exe文件运行炸内存原因剖析...

匿名 · 更新于 2021/9/26

关键代码:multiprocessing.freeze_support()

以上这句代码加在 if __name__ == '__main__':   的下一行,记得在文件开头import multiprocessing一下,问题完美解决


首先给出伪代码

from multiprocessing import Process

def task():

print("hahaha")

pass

if __name__ == '__main__':

p = Process(target=task)

p.start()

pycharm运行结果:

8650c9f6433b0ad5ccffff7e200655b5.png

打包成exe后运行:

c841d03ac684dbeec106292bb4a51e2d.png

打开exe文件没有任何打印信息,再看任务管理器

7a4a8362082d48067a7fb9da5c3a6be0.png

下一张图

64db7303029faee93496ea7b3136ae72.png

内存占用飙升,第一时间意识到,程序在循环开启子进程,而且并没有进入子进程执行,这令我百思不得其解,十分困扰。

毕竟python不是主流做可执行软件,网络资料十分有限,后来在某论坛找到一篇没说清楚问题的博客,不过好在实践能力强,get到了一条关键语句

关键代码:multiprocessing.freeze_support()

以上这句代码加在 if __name__ == '__main__':   的下一行,记得在文件开头import multiprocessing一下,问题完美解决

分析:开启子进程是不支持打包exe文件的,所以会不停向操作系统申请创建子进程,导致内存炸了,multiprocessing.freeze_support()就是解决这个问题的,不过由于应用不多,导致这方面资料非常少

给个赞呗~

Python 之pyinstaller模块打包成exe文件

一.安装pyinstaller pip install pyinstaller 二.下载安装pyinstaler运行时所需要的windows扩展pywin32 https://github.com/m ...

如何将 Python 程序打包成 .exe 文件?

有不少订阅本公众号的朋友都不是玩 Python,甚至都不是计算机相关专业的,当我给他们一个 Python 程序时,他们是完全不知道该怎么运行的. 于是我想是不是可以将我的程序打包成可执行文件,直接运行 ...

python + pyinstaller 实现将python程序打包成exe文件直接运行

pyinstaller 我们在平常学习使用python的时候经常会自己编写一些小程序来使用,虽然python是跨平台的语言,但是如果我们想要在一个没有python以及很多库环境的电脑上使用我们的小程序 ...

将 Python 程序打包成 .exe 文件

1.简介 做了一个excel的风控模板,里面含有宏,我用python的第三方xlwings部署到linux后发现,linux环境并不支持xlwings. Python 程序都是脚本的方式,一般是在解析 ...

把Python项目打包成exe文件

我们很多时候,写好的程序需要打包成.exe文件才可以发给客户,那么今天我就来谈一谈,如何将一个写好的Python程序打包成exe文件! 首先,我们我们使用到的工具是python 3.7 和 Pyins ...

Python Windows下打包成exe文件

Python Windows 下打包成exe文件,使用PyInstaller 软件环境: 1.OS:Win10 64 位 2.Python 3.7 3.安装PyInstaller 先检查是否已安装Py ...

将 Python3 文件打包成 exe 文件

我们用 Python 写好的代码,如何给别人在没有配置 Python 环境的情况下直接使用呢?尤其是面向 windows 众. 因为 Python 是一门解释性的语言,离开了 Python 解释器,P ...

Pyton项目打包成exe文件

Python项目打包成exe文件 1 系统环境 windows版本: Win7 64位 python环境:Anaconda python版本:3.6 64位 pyinstaller版本:3.5 1 安 ...

随机推荐

CC1310之使用SMARTRF STUDIO

SMARTRF STUDIO是TI提供的射频测试软件,在调射频的时候非常非常非常好用,推荐每一个使用TI射频芯片的工程师都要掌握. 1 如何使用? 要使用SMARTRF STUDIO,硬件必须连接仿真 ...

几种 Java 序列化方案的性能比较

较结果: create ser deser total size +dfl java-built-in 62 5608 29649 35257 889 514 hessian 65 3812 6708 ...

转载css层级优先级。

解读CSS样式优先级(修改门户自定义样式必读) 一.什么是CSS优先级?所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序.当同一个元素(或内容)被多个CSS选择符选中时,就要按照优先权取舍 ...

convert 时间转换

格式:CONVERT(data_type,expression[,style])说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,c ...

HTTP网络协议与手写Web服务容器

Http协议 1.深入概念 Http:HyperText Transfer Protocol,即是超文本传输协议. 2.浅出概念(使用浏览器访问服务器端网页时需要遵循的一系列规则) Http:将各种不 ...

js坚持不懈之18:trim()方法

trim()方法,类似Python中的strip(),用去去除字符串对象前后的空格.

详解tween.js 中文使用指南

补间(动画)是一个概念,允许你以平滑的方式更改对象的属性.你只需告诉它哪些属性要更改,当补间结束运行时它们应该具有哪些最终值,以及这需要多长时间,补间引擎将负责计算从起始点到结束点的值. 例如,pos ...

用swoole简单实现MySQL连接池

MySQL连接池 在传统的网站开发中,比如LNMP模式,由Nginx的master进程接收请求然后分给多个worker进程,每个worker进程再链接php-fpm的master进程,php-fpm再 ...

String的一些方法试探

package countio; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; impo ...

is-a,has-a,like-a是什么 sql server中,N''表示什么意思? 关于SQL SERVER的N前缀的理解

https://blog.csdn.net/ooppookid/article/details/51174122#commentBox 1.is-a,has-a,like-a是什么 在面向对象设计的领 ...