数据管线变慢,不一定是“算得慢”。它也可能在等文件、网络或锁。传统的 cProfile 会记录每次函数调用和返回,能精确计数,却会增加额外开销,还可能改变原本的时间分布。Python 3.15 因此加入 Tachyon:一种统计抽样分析器,像隔一会儿给程序拍张快照,再从多次快照估算时间花在哪里。
据 Python 官方文档,Tachyon 不只观察 CPU time——处理器真正工作的时间,还能观察 wall-clock time——连等待也算在内,以及持有 GIL、处理异常所花的时间。它还能查看线程、async 任务、垃圾回收和 native C 扩展,并按 PID 附着到正在运行的进程,无须改代码或重启。这对线上数据管线尤其有用:开发者可以先判断程序究竟忙于计算,还是卡在等待,再决定从哪里优化。
它并非取代 cProfile。抽样可能漏掉一闪而过的短函数;需要精确调用次数时,仍应使用确定性追踪。