如何使用line_profiler(来自Robert Kern)?

发布于 2021-01-29 17:10:52

我尝试使用line_profiler模块通过Python文件获取逐行配置文件。到目前为止,这是我所做的:

1)使用.exe文件从pypi安装line_profiler
(我在WinXP和Win7上)。只需单击安装向导即可。

2)编写一小段代码(类似于此处另一个已回答问题中的要求)。

from line_profiler import LineProfiler
def do_stuff(numbers):
    print numbers

numbers = 2
profile = LineProfiler(do_stuff(numbers))
profile.print_stats()

3)从IDLE / PyScripter运行代码。我只有时间。

Timer unit: 4.17188e-10 s

如何获得我执行的代码的完整逐行配置文件?我从未使用过装饰器之类的任何高级Python功能,因此很难理解如何使用此处此处的几篇文章提供的指南。

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    只需按照第一个链接中的Dan
    Riti的示例进行操作,但请使用您的代码。安装line_profiler模块后,您要做的就是@profile在要逐行分析的每个函数之前添加一个装饰器,并确保在代码中的其他位置至少每个函数被调用一次,因此对于您的琐碎示例代码而言,是这样的:

    example.py 文件:

    @profile
    def do_stuff(numbers):
        print numbers
    
    numbers = 2
    do_stuff(numbers)
    

    已经这样做了,通过运行脚本kernprof.py 已安装在你的C:\Python27\Scripts目录中。这是在Windows
    7命令行会话中执行此操作的(不太有趣的)实际输出:

    > python "C:\Python27\Scripts\kernprof.py" -l -v example.py
    2
    Wrote profile results to example.py.lprof
    Timer unit: 3.2079e-07 s
    
    File: example.py
    Function: do_stuff at line 2
    Total time: 0.00185256 s
    
    Line #      Hits         Time  Per Hit   % Time  Line Contents
    ==============================================================
         1                                           @profile
         2                                           def do_stuff(numbers):
         3         1         5775   5775.0    100.0      print numbers
    

    kernprof.py为了在IDLE或PyScripter中进行等效操作,您可能需要调整最后一步(使用而不是直接由Python解释器运行测试脚本)。

    ✶ 更新

    看来在line_profilerv1.0中,该kernprof实用程序是作为可执行文件而不是.py像我在上面撰写本文时那样的脚本文件分发的。这意味着现在需要使用以下命令从命令行调用它:

    > "C:\Python27\Scripts\kernprof.exe" -l -v example.py
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看