cProfile和Python:查找代码花费最多时间的特定行号

2024-10-16 22:34:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用cProfile、pstats和Gprof2dot来评测一个相当长的python脚本。在

结果告诉我,大部分时间花在调用我定义的对象中的方法上。然而,我真正想知道的是,函数中的行号正在消耗时间。在

有什么办法得到这些额外的信息吗?在

(顺便说一下,如果有帮助的话,我将在OSX雪豹上使用Python2.6…)


Tags: 对象方法函数脚本信息定义时间cprofile
3条回答

cProfile不跟踪函数内的行号;它只跟踪定义函数的行号。在

cProfile试图复制profile(纯Python)的行为。profile使用pstats来存储运行中的数据,pstats只存储函数定义的行号,而不是单个Python语句的行号。在

如果您需要更精细地计算出什么在占用您的时间,那么您需要将您的大函数重构为几个更小的函数。在

在python中有一个由robertkern编写的line profiler。在

假设被“吃掉”的时间是某个数字,比如40%。如果你只是在一个随机的时间中断程序或暂停它,你会看到它的概率是40%,精确地暴露在调用堆栈上。这样做10次,在4个样本上,+/-你会看到它。在

This tells why it works.This is an example.

相关问题 更多 >