我正在寻找一种分析我的python脚本的工具。例如
有类似的东西吗?
答案 0 :(得分:5)
Python有built-in profiler
Python有various memory profilers
答案 1 :(得分:3)
看看cProfile。这是一个用法示例:
me@mine:~ $ cat foo.py
def double(i):
return i * 2
def halve(i):
return i / 2.0
for i in range(10000):
double(i)
halve(i)
me@mine:~ $ python -m cProfile foo.py
20005 function calls in 0.009 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.009 0.009 <string>:1(<module>)
1 0.006 0.006 0.009 0.009 foo.py:1(<module>)
10000 0.001 0.000 0.001 0.000 foo.py:1(double)
10000 0.002 0.000 0.002 0.000 foo.py:4(halve)
1 0.000 0.000 0.009 0.009 {execfile}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
1 0.000 0.000 0.000 0.000 {range}
由Sven Marnach关联的帖子中提到的一个好的记忆分析器是Heapy
答案 2 :(得分:0)
我经常使用Ipython来分析我的代码。使用魔术命令“%run”执行脚本(在ipython提示符内):
%run -p your_python_script.py
在Python分析器模块的控制下运行程序。
您甚至可以使用“%prun”魔法来分析语句(例如函数调用):
%prun a_python_statement
%prun的好处是,它在当前会话的上下文中执行语句(即,您可以使用先前定义的变量以及当前命名空间中的任何其他变量)。
如果您想获得每行分析信息,我发现line_profiler模块非常方便。它有点老了,但它完成了工作......正如罗伯特·科恩编写的东西所期望的那样; - )。