是否有一个工具能够测量项目中函数调用的频率并计算Python代码的其他方面(用于统计目的)?
谢谢
答案 0 :(得分:2)
Python探查器应该为您提供相当多的信息:
python -m cProfile -o fooprof myscript.py
使用简单的脚本加载结果:
#!/usr/bin/env python
import pstats
p = pstats.Stats('fooprof')
p.strip_dirs().sort_stats(-1).print_stats()
或者,如果您未指定-o fooprof
,则结果将打印到stdout。
请参阅http://docs.python.org/library/profile.html
上的文档我不确定你想要计算的“其他方面”,但这将决定如何多次次调用该函数。如果您对调用的“频率”感兴趣,那么您可以找到平均频率作为总执行时间和调用函数的次数的函数。例如:
假设在10秒内调用了foo()
100次。通话的平均频率是10 /秒。
答案 1 :(得分:1)
我想你想做静态代码分析。您的代码中有多少个位置 叫一个功能。
在像python这样的动态语言中,这很难做到,因为有很多 除了正确的名称,甚至是python字节码编译器之外,还可以调用函数 不知道总会在一个地方调用哪个函数,甚至可能会改变 执行期间。而且还有标准的OO多态性。
考虑:
def doublefx(f, x):
return f(x)*2
print doublefx(math.sqrt, 9) # 6
f = stdin.readline()
print doublefx(getattr(math, f), 9) # ?
任何静态分析工具都无法找出数学中的哪些函数。*将会发生 被这段代码调用。即便是第一个例子也很难推理, 第二个是不可能的。
以下工具对复杂性进行了一些静态分析。
像PyLint和PyChecker这样的其他分析工具更注重风格和可能性 错误。
答案 2 :(得分:0)
我从未使用它,但看起来cProfile可能是一个很好的起点。 (请注意,在该页面上提到的三个分析器中,一个(热门)是实验性的并且没有得到很好的支持,一个(配置文件)“为配置文件程序增加了大量开销”,最后一个是cProfile,所以可能会这样做。)页面顶部提供了profile.py
和pstats.py
源代码的链接。