2024-10-16 22:34:54 发布
网友
我使用cProfile、pstats和Gprof2dot来评测一个相当长的python脚本。在
结果告诉我,大部分时间花在调用我定义的对象中的方法上。然而,我真正想知道的是,函数中的行号正在消耗时间。在
有什么办法得到这些额外的信息吗?在
(顺便说一下,如果有帮助的话,我将在OSX雪豹上使用Python2.6…)
cProfile不跟踪函数内的行号;它只跟踪定义函数的行号。在
cProfile
cProfile试图复制profile(纯Python)的行为。profile使用pstats来存储运行中的数据,pstats只存储函数定义的行号,而不是单个Python语句的行号。在
profile
pstats
如果您需要更精细地计算出什么在占用您的时间,那么您需要将您的大函数重构为几个更小的函数。在
在python中有一个由robertkern编写的line profiler。在
假设被“吃掉”的时间是某个数字,比如40%。如果你只是在一个随机的时间中断程序或暂停它,你会看到它的概率是40%,精确地暴露在调用堆栈上。这样做10次,在4个样本上,+/-你会看到它。在
This tells why it works.This is an example.
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.
相关问题 更多 >
编程相关推荐