有没有工具,用于分析python代码?

时间:2011-06-05 23:10:57

标签: python code-analysis

我正在寻找一种分析我的python脚本的工具。例如

  1. 代码的哪一部分花费的时间最多
  2. 代码的哪一部分消耗太多内存
  3. 等......
  4. 有类似的东西吗?

3 个答案:

答案 0 :(得分:5)

答案 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模块非常方便。它有点老了,但它完成了工作......正如罗伯特·科恩编写的东西所期望的那样; - )。