当前位置: 首页 > 面试题库 >

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

马魁
2023-03-14
问题内容

我尝试使用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功能,因此很难理解如何使用此处和此处的几篇文章提供的指南。


问题答案:

只需按照第一个链接中的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


 类似资料:
  • 我对Kafka很陌生,对它有一些疑问。我已经配置了一个kafka消费者来消费来自主题的消息,并且我有不同类型的事件进入主题。f、 e、。 我想配置不同的kafka监听器来消费不同类型的事件。我认为有两种方法可以做到这一点,比如使用字符串(json)格式的事件,转换成事件对象,在不同类型之间切换,执行业务逻辑,或者配置不同的kafka监听器工厂 因此,第一种方法不是 ,对于第二种方法,我需要创建许多

  • 问题内容: 我曾经知道您需要使用诸如selenium之类的webtoolkit来自动执行抓取。 我将如何能够单击Google Play商店上的下一个按钮,以便仅出于我的大学目的刮取评论! 我已经更新了代码,一次又一次重复地给了我40个项目。for循环怎么了? 似乎正在更新的源代码没有传递到xpath,这就是为什么它返回相同的40个项目的原因 问题答案: 我会做这样的事情: 不过,最好不要等待固定的

  • 问题内容: 我一开始就知道您需要使用诸如硒之类的webtoolkit来自动进行抓取。 我将如何能够单击Google Play商店上的下一个按钮,以便仅出于我的大学目的刮取评论! 我已经更新了代码,一次又一次地重复了40个项目。for循环出了什么问题? 似乎正在更新的源代码没有传递到xpath,这就是为什么它返回相同的40个项目的原因 问题答案: 我会做这样的事情: 不过,最好不要等待固定的时间。因

  • 我的文件夹根目录上有一个。env文件。这是我的。环境 我试图访问application.yml上的PORT变量,但它没有从。env文件中读取变量。这是我的申请。yml

  • 问题内容: 我正在尝试从JNI层了解如何使用。为了理解,我构建了一个非常简单的示例: 然后从本地JNI层: 如果我使用openjdk在此处(debian / linux wheezy amd64)运行此示例: 这是我看到的: 我了解索引2和3的值。但是所有其他值对我来说都没有任何意义,我原本希望这样: 我从JNI的ByteBuffer使用中误解了什么? 问题答案: 我从文档中错过的是默认情况下实际

  • 我有以下Rest资源,可以从DB下载文件。它在浏览器中工作得很好,但是,当我尝试从Java客户机执行以下操作时,我得到406(Notaccepted error)。 客户端部署在同一台服务器上,具有不同的端口(消息给出正确的名称): 我错过了什么?

  • 我正在用JavaFx乞讨,我意识到我需要一些帮助在运行时用一些TreeItems更新一个TreeView,它应该在主窗口中更新。 在这里,可以看到两个窗口的截图: 较大的是主窗口,它调用(通过在文件中单击>>New Project),New Small。在较小的窗口中,我可以得到键入的字符串,然后单击enter按钮。 请假设我在FXML文件中映射了所有的内容。谢谢

  • 问题内容: 我需要使用某些Java类中包含的逻辑。我找到了JNI,但该项目似乎最近没有更新。 有没有办法在Delphi本机应用程序中使用它?我使用Delphi 2009。 问题答案: 比JNI更新的解决方案是JNA,它还支持(Delphi)DLL的回调。我发现它易于使用。