我正在使用cProfile,pstats和Gprof2dot来分析一个相当长的python脚本。
结果告诉我,花在调用我定义的对象中的方法的时间最多。但是,我真正想要的是确切地知道该函数中的行号正在耗费时间。
任何想法是如何获得这些额外信息的?
(顺便说一下,如果有帮助的话,我在OSX雪豹上使用Python 2.6)。
答案 0 :(得分:3)
Robert Kern写的python中有一个line profiler。
答案 1 :(得分:2)
假设被“吃掉”的时间是一些数字,比如40%。然后,如果您只是中断程序或在随机时间暂停它,那么您将看到它的概率为40%,精确地暴露在调用堆栈中。这样做10次,在4个样本上,+ / - ,你会看到它。
答案 2 :(得分:2)
cProfile
不跟踪函数中的行号;它只跟踪定义函数的行号。
cProfile
尝试复制profile
(纯Python)的行为。 profile
使用pstats
来存储运行中的数据,而pstats
仅存储函数定义的行号,而不是单个Python语句的行号。
如果你需要更精细地弄清楚什么是你所有的时间,那么你需要将你的大功能重构为几个较小的功能。