楼主: Studio-R
2624 0

Python 性能分析工具简介 [推广有奖]

  • 5关注
  • 12粉丝

已卖:265份资源

教授

32%

还不是VIP/贵宾

-

威望
0
论坛币
37824 个
通用积分
2635.4278
学术水平
31 点
热心指数
30 点
信用等级
18 点
经验
26192 点
帖子
813
精华
1
在线时间
1402 小时
注册时间
2016-11-4
最后登录
2025-12-4

楼主
Studio-R 在职认证  发表于 2016-12-2 09:37:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
 By Context Manager
  可以上下文管理器自己实现一个计时器, 通过定义类的 __enter__ 和 __exit__ 方法来实现对管理的函数计时, 类似如:
   1.jpeg

  使用方式如下:
   2.png

  By Decorator
  然而我认为装饰器的方式更加优雅
   3.jpeg

  使用就很简单了:
   4.png

  运行结果:
  系统自带的time命令
  使用示例如下:
   5.png

  上面的结果说明: 执行脚本消耗0.79sCPU时间, 0.18秒执行内核函数消耗的时间,总共0.977s时间。
  其中, total时间 - (user时间 + system时间) = 消耗在输入输出和系统执行其它任务消耗的时间
  python timeit 模块
  可以用来做benchmark, 可以方便的重复一个程序执行的次数,来查看程序可以运行多块。
  cProfile
  直接看带注释的使用示例吧。 

   6.jpeg

7.jpeg

  cProfile将分析的结果保存到result.out文件中,但是以二进制形式存储的,想直接查看的话用提供的 pstats 来查看。
   8.jpeg

  截取一个查看test()调用了哪些函数的输出示例:
   9.jpeg

  profile.Profile
  cProfile还提供了可以自定义的类,可以更精细的分析, 具体看文档。
  格式如: class profile.Profile(timer=None, timeunit=0.0, subcalls=True, builtins=True)
  下面这个例子来自官方文档:
   10.jpeg

  line_profiler
  line_profiler是一个对函数进行逐行性能分析的工具
  示例
   11.jpeg

   12.png

  通过 kernprof 命令来注入分析,运行结果如下:
   13.jpeg

  hits(执行次数) 和 time(耗时) 值高的地方是有比较大优化空间的地方。
  memory_profiler
  类似于”line_profiler“对基于行分析程序内存使用情况的模块。
  同样是上面”lineprofiler“中的代码,运行 python -m memory_profiler profile.py 命令生成结果如下:
   14.jpeg



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python 性能分析 分析工具 benchmark Profile python system 上下文 计时器 二进制

[url=https://edu.cda.cn/page/110][/url]

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-5 16:32