加快python"import"加载器的速度

YGA*_*YGA 22 python

我对python启动速度有多慢感到非常沮丧.只需导入更多或更少的基本模块需要一秒钟,因为python沿着sys.path运行,寻找匹配的文件(并生成4个stat()调用 - ["foo","foo.py","foo.pyc","foo.so "] - 每次检查).对于复杂的项目环境,有大量不同的目录,这可能需要大约5秒钟 - 所有这些都可以运行可能立即失败的脚本.

有人建议如何加快这个过程?例如,我见过的一个hack是将LD_PRELOAD_32环境变量设置为一个库,它在运行之间缓存ENOENT调用的结果(例如,失败的stat()调用).当然,这有各种各样的问题(可能混淆非python程序,负面缓存等).

Ale*_*lli 10

尽可能多地压缩pyc文件(使用适当的软件包目录结构),并将该zip文件作为sys.path中的第一个条目(理想情况下位于最佳可用本地磁盘上)可以大大加快启动时间.


Set*_*eth 5

我首先想到的是:

  • 尝试较小的路径
  • 确保你的模块是 pyc 的,这样它们加载速度会更快
  • 确保不要重复导入或导入太多

除此之外,您确定磁盘操作是让您陷入困境的原因吗?您的磁盘/操作系统是否真的很忙或者又旧又慢?

也许碎片整理是合适的?

  • 双重导入的成本有限。sys.modules 是已加载模块的缓存。 (4认同)