Windows环境下Python脚本内部计时与总执行时间差距大,如何缩短耗时?
优化Windows下Python脚本总执行时间的方法
1. 降低模块加载开销
- 延迟导入非必要模块:不要把所有导入语句都放在文件头部,仅将核心逻辑依赖的模块放在头部导入,仅在异常处理、边缘功能中用到的模块,移动到实际调用的代码位置再导入。针对numpy、opencv这类体积较大的第三方库,优先导入用到的子模块而非全库,例如用
from PIL import Image替代import PIL,避免from xxx import *的导入方式。 - 排查冗余导入:删除脚本中未使用的导入语句,可执行命令
python -X importtime .\myanalyzer.py查看各模块的加载耗时,针对性优化耗时最高的依赖项。 - 优先使用内置模块:实现相同功能时优先选择Python标准库,避免引入不必要的第三方大依赖,例如简单路径处理用内置
pathlib而非第三方工具库,简单数据解析用内置json而非pandas等重依赖库。
2. 优化运行与分发方式
- 更换运行时:如果脚本代码兼容PyPy,可换用PyPy运行脚本,多数场景下启动和执行效率都高于CPython。
- 编译为独立可执行文件:使用Nuitka、PyInstaller等工具将脚本打包为exe可执行文件,其中Nuitka会将Python代码编译为C语言后再生成二进制可执行文件,启动开销远低于直接调用Python解释器运行脚本,打包时注意排除未使用的模块减少文件体积。
- 开启Python优化模式:运行脚本时添加
-O参数,即python -O .\myanalyzer.py,会自动移除断言、调试相关代码,小幅降低启动和执行开销。
3. 系统层面优化
- 添加杀毒软件白名单:Windows Defender等安全软件会在每次启动python.exe时扫描解释器、脚本文件以及依赖的库文件,这部分开销通常占冷启动耗时的70%以上,将Python解释器路径、脚本存放目录添加到杀毒软件白名单后,启动速度会有非常明显的提升。
- 减少磁盘IO开销:如果使用机械硬盘,可将脚本、依赖的库、输入文件都放到固态硬盘,也可以用RAMDisk内存盘存放相关文件,消除磁盘读取的耗时。
- 改为常驻服务模式:如果需要频繁调用该脚本,可将其改写为常驻后台的服务,通过本地Socket、HTTP接口等方式传递参数调用,仅需一次启动,后续每次调用仅执行核心逻辑,总耗时可降低到和脚本内部统计的核心执行时间接近。
内容的提问来源于stack exchange,提问作者youngz
相关产品推荐
相关产品推荐

