Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有分析python代码的工具吗?_Python_Code Analysis - Fatal编程技术网

有分析python代码的工具吗?

有分析python代码的工具吗?,python,code-analysis,Python,Code Analysis,我正在寻找一个工具来分析我的python脚本。比如说 代码的哪一部分花费的时间最多 代码的哪一部分占用了太多内存 等等 有这样的吗?看看。下面是一个用法示例: 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 cProfil

我正在寻找一个工具来分析我的python脚本。比如说

  • 代码的哪一部分花费的时间最多
  • 代码的哪一部分占用了太多内存
  • 等等
  • 有这样的吗?

    看看。下面是一个用法示例:

    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}
    
    me@mine:~$cat foo.py
    def double(i):
    返回i*2
    def减半(i):
    返回i/2.0
    对于范围(10000)内的i:
    双(一)
    减半(一)
    me@mine:~$python-mcprofile foo.py
    0.009 CPU秒内调用20005个函数
    订购人:标准名称
    ncalls tottime percall cumtime percall文件名:lineno(函数)
    1    0.000    0.000    0.009    0.009 :1()
    1 0.006 0.006 0.009 0.009 foo.py:1()
    10000 0.001 0.000 0.001 0.000 foo.py:1(双倍)
    10000 0.002 0.000 0.002 0.000福比:4(减半)
    1 0.000 0.000 0.009 0.009{execfile}
    1 0.000 0.000 0.000 0.000{方法'disable'的''lsprof.Profiler'对象}
    1 0.000 0.000 0.000 0.000{范围}
    
    一个好的内存分析器,正如链接到的帖子中提到的,是

  • Python有一个

  • Python有很多方法

  • 我经常使用来分析我的代码。使用魔术命令“%run”执行脚本,如下所示(在ipython提示符内):

    在Python探查器模块的控制下运行程序

    您甚至可以使用“%prun”魔术分析语句(例如函数调用):

    %prun的优点在于它在当前会话的上下文中执行语句(即,您可以使用以前定义的变量以及当前命名空间中的任何其他内容)


    如果您想获得每行分析信息,我发现该模块非常方便。它有点旧了,但它确实有用。。。正如罗伯特·克恩(Robert Kern)编写的代码所预期的那样;-)

    这些工具通常被称为分析器。
        %run -p your_python_script.py
    
        %prun a_python_statement