我正在使用 cProfile、pstats 和 Gprof2dot 来分析一个相当长的 python 脚本。
结果告诉我,大部分时间都花在调用我定义的对象中的方法上。但是,我真正想要的是确切地知道该函数中的哪个行号正在占用时间。
知道如何获取这些附加信息吗?
(顺便说一句,如果有帮助的话,我在 OSX 雪豹上使用 Python 2.6...)
有一个由 Robert Kern 编写的 Python行分析器。
假设“吃光”的时间是某个数字,比如 40%。然后,如果您只是中断程序或在随机时间暂停它,您将看到它的概率是 40%,它精确地暴露在调用堆栈上。这样做 10 次,在 4 个样本上,+/-,你会看到它。
cProfile
不跟踪函数内的行号;它只跟踪定义函数的行号。
cProfile
尝试复制profile
(纯 Python)的行为。 profile
用于pstats
存储运行中的数据,pstats
仅存储函数定义的行号,而不是单个 Python 语句。
如果您需要以更精细的粒度弄清楚您一直在吃什么,那么您需要将您的大功能重构为几个更小的功能。