1. 为什么选 py-spy?
你的自动化脚本涉及大量的 uiautomator2 网络请求和 OpenCV 计算。
- 无侵入:不需要在代码里写一堆
start_time/end_time。 - 低开销:它是用 Rust 写的,直接读取进程内存栈,不会让你本就卡顿的脚本雪上加霜。
- 穿透力:可以看到 C 扩展(OpenCV)的耗时。
2. 三板斧:安装与基础使用
安装
pip install py-spy
第一招:top 模式(查看当前“谁最火”)
就像 Linux 的 top 一样,实时看哪个函数正在疯跑。
sudo py-spy top --pid 302857
- 重点关注
%Own:如果multiple_find_picture的%Own很高,说明瓶颈在函数内部逻辑。 - 重点关注
%Total:如果cv2.matchTemplate的%Total很高,说明 OpenCV 计算压力大。
第二招:record 模式(生成“火焰图”)
这是你定位 inspect.stack() 问题的关键。
sudo py-spy record -o profile.svg --pid 302857 --duration 30
- 怎么看?:浏览器打开 SVG,越宽的格子表示耗时越长。
- 看顶端:如果最顶端的格子是
inspect.stack或re.search,说明你在做无意义的 CPU 浪费。
第三招:--native(查看底层 C 耗时)
如果你怀疑是 OpenCV 的问题,必须加这个参数:
sudo py-spy top --pid 302857 --native
评论区(0 条)
发表评论⏳ 加载编辑器…