服务启动时 import pandas 花了 3.1 秒,整个 CLI 冷启动 4.2 秒。用户只是跑一个读配置的小命令。日志里能对上时间点,这种反而好排。

pandas 在 import 时会加载 numpy、初始化 C 扩展并探测一批可选后端,这部分成本按模块算。放在模块顶层,任何子命令都要先付这笔钱。这一点先确认清楚,后面就不用反复试。

python -X importtime -c "import pandas" 2> import.log
python -X importtime app.py --help 2> app.log

「import 耗时」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

处理上按这个顺序:用 python -X importtime 跑一次 按累计时间找最贵的几行;把只在部分命令用到的重依赖挪进函数内部延迟导入;确认没有包在 __init__.py 里提前 import 子模块;改完再跑一次 importtime 对比总耗时。

结果对不对很好判断,importtime 里 pandas 不再排在前几行 --help 冷启动从 4.2 秒降到 0.4 秒。

作者 9823189