如何测量python函数的速度

新手上路,请多包涵

我通常作为竞争对手在 www.codefights.com 上编写代码(功能)。因此速度是代码的重要组成部分之一。我如何测量 python 语言中某个代码的速度,无论它是 lambda 函数还是 def 函数。

原文由 Hissaan Ali 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 363
1 个回答

分三步 ;)

第 1 步: 安装 line_profiler

 pip install line_profiler

第 2 步:@profile 添加到您的代码中:

 from time import sleep

@profile
def so_slow(bar):
    sleep(5)
    return bar

if __name__ == "__main__":
    so_slow(5)

第 3 步: 测试您的代码:

 kernprof -l -v your_code.py

结果

Wrote profile results to your_code.py.lprof
Timer unit: 1e-06 s

Total time: 5.00283 s
File: your_code.py
Function: so_slow at line 4

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
     4                                           @profile
     5                                           def so_slow(bar):
     6         1      5002830 5002830.0    100.0      sleep(5)
     7         1            2      2.0      0.0      return bar

内存分析器

您也可以使用 memory_profiler ,安装它,添加配置文件并调用它:

 pip install memory_profiler
python -m memory_profiler your_code.py

结果:

 Filename: your_code.py

Line #    Mem usage    Increment   Line Contents
================================================
     4   21.289 MiB    0.000 MiB   @profile
     5                             def so_slow(bar):
     6   21.289 MiB    0.000 MiB       sleep(5)
     7   21.289 MiB    0.000 MiB       return bar

更新:

您可以使用 objgraph 查找 memory leak 或绘制代码图:

 from time import sleep

import objgraph
x = [1]

objgraph.show_backrefs([x], filename='sample-backref-graph.png')

def so_slow(bar):
    sleep(5)
    return bar

if __name__ == "__main__":
    so_slow(5)

结果:

在此处输入图像描述

参考: 分析 Python 性能的指南

原文由 RaminNietzsche 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题