千家信息网

怎么加快Python应用的启动时间

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章将为大家详细讲解有关怎么加快Python应用的启动时间,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我听说pipenv9.0.2已经发布,启动时间有了很大的
千家信息网最后更新 2025年02月23日怎么加快Python应用的启动时间

这篇文章将为大家详细讲解有关怎么加快Python应用的启动时间,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

我听说pipenv9.0.2已经发布,启动时间有了很大的改进。

我很快就试了一下,但我觉得并不快。所以我用Python3.7的新特性来研究它。

在本文中,我将介绍该特性以及如何使用它。

启动时间≒导入时间

例如,pipenv -h 的执行时间比显示帮助消息的时间长得多。

一般来说,当应用程序启动时,会有一些启动过程,比如加载环境变量或配置文件。

对于Python应用程序,导入模块占用了大部分启动时间。例如,pipenv --version 花费了大约800ms,而import pipenv 花费了700ms。


显示模块的导入时间

Python 3.7有新的特性来显示导入模块的时间。

这个特性是通过 -X importtime 选项或 PYTHONPROFILEIMPORTTIM 环境变量来启用的。

例如,您可以利用以下命令来测试pipenv的导入时间:



这里是一个pipenv --version输出结果的例子 。

研究导入时间

在输出的最后面,你会看到这些行:


在最后一行,579479表示 import pipenv 需要579479us。

在导入pipenv的同时,还导入了许多其他模块。从上面的示例中,您可以看到 pipenv 导入了pipenv.cli。子导入以2个空格缩进。

再看最后一行。507表示运行pipenv模块时只需要507us。579479-507=578972us用于子导入。

找出缓慢的部分

我们来从输出中找到缓慢子树。我选取了几行。


pkg_resources

如您所见,导入pkg_resources 很缓慢。

但令人惊讶的是,pkg_resources没有进行缩进;它不是pipenv的子导入。

这意味着pkg_resources是由pipenv脚本而不是模块导入的。


坏消息: 导入pkg_resources很慢。这是一个已知的问题,在不破坏向后兼容性的情况下很难修复。

好消息: 您可以避免导入pkg_resources!


在安装了wheel之后,pip会对它进行构建并从构建包进行安装。

从wheel (.whl)和源码包(.tar.gz)安装是不同的过程。

从wheel安装时,脚本中不使用pkg_resources:


IPython

看下面的部分.


pipenv导入dotenv, dotenv再导入 dotenv.ipython,它再导入IPython。

这就是为什么pipenv在我的环境中开始很慢; 我已经安装了IPython。

但是为什么要导入IPython呢?我阅读了dotenv源码,发现它是用于IPython扩展的。

当然,pipenv和许多dotenv用户并不使用IPython扩展。

我向dotenv提交了一个推送请求,建议dotenv根据需要导入IPython。

由于pipenv有自己的dotenv副本,所以我向pipenv提交了完全删除dotenv.ipython的推送请求。

结论

我可以将 pipenv--version 的时间从800ms减少到500ms。


导入时间分析是研究和优化应用程序启动时间的好方法。

关于"怎么加快Python应用的启动时间"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

时间 模块 应用 特性 缓慢 应用程序 环境 程序 篇文章 研究 输出 一行 变量 我向 更多 消息 源码 脚本 过程 部分 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 分布式对等网络技术 如何看服务器内存 英创网络技术有限公司 科赛特宽带网络技术有限公司 数据库统计软件开发部人数 编办网络安全应急保障制度 国家网络安全战略 发布时间 武汉湖北区app软件开发 海南卫星授时服务器云服务器 梦幻西游手游贺新春服务器 万方数据库检索验证页面 2021网络安全教育公益讲座 乐山宝腾互联网科技有限公司 中国顶级域名根服务器 部落冲突服务器维护是要封号了吗 软件开发建立网络连接 软件开发招聘深圳 网络技术中间系统 微信清理僵尸粉软件开发 军事网络安全安全策略 信息泄露会引起网络安全问题吗 光环无限连接不上服务器 vivo软件开发在线笔试 易语言如何连接ftp数据库 车载网络技术分类 南京嗨创网络技术有限公司 河南发展软件开发科技 软件开发公司外包价格 什么是服务器数据分析 城市网络安全顶层设计方案
0