网络编程
位置:首页>> 网络编程>> Python编程>> python性能测量工具cProfile使用解析

python性能测量工具cProfile使用解析

作者:wellwill  发布时间:2022-01-28 08:22:03 

标签:python,性能,测量,工具,cprofile

背景:

Python是一种解释性的语言,执行速度相比C、C++等语言十分缓慢;因此我们需要在其它地方上下功夫来提高代码的执行速度。

首先需要对代码进行分析,这个时候则需要用一些工具。

这里介绍cProfile:

全代码分析:

命令行:


cProfile -s tottime your_program.py

结果如下:


ncalls tottime percall cumtime percall filename:lineno(function)
 66  0.001  0.000  11.850  0.180 base.py:228(micro_service)
 66  0.003  0.000  11.849  0.180 tools.py:557(micro_service)
1056  0.001  0.000  11.073  0.010 connection.py:463(drain_events)
1056  0.015  0.000  11.072  0.010 connection.py:466(blocking_read)
1056  0.008  0.000  10.920  0.010 transport.py:233(read_frame)
3168  0.014  0.000  10.908  0.003 transport.py:370(_read)
3168  10.892  0.003  10.892  0.003 {method 'recv' of '_socket.socket' objects}
 66  0.001  0.000  9.814  0.149 rpc.py:350(__call__)
 66  0.001  0.000  8.395  0.127 rpc.py:329(result)

块分析:

上面属于文件分析,但是我们可能只对部分代码感兴趣,那么只需要在这部分代码的前后加上下面这两段代码即可:


import cProfile
cp = cProfile.Profile()
cp.enable()
YOUR CODE
cp.disable()
cp.print_stats()

结果与全代码分析的类似,但是只包含你感兴趣的部分。

行分析:

行分析需要安装line_profiler:


pip install line_profiler

@profile
def class_name()
pass

然后在命令行输入:


kernprof -l -v your_code.py
-l 逐行分析
-v 立即查看结果

示例:


from cProfile import Profile as profile
from pstats import Stats
def ():
p = profile()
p.snapshot_stats()
p.enable()

p.disable()
p.print_stats(2) # 按照调用累加总耗时累加排序,即将最耗时的函数最优先
p.dump_stats("call.log")

关于profile和cProfile的更多链接,请点击:

https://docs.python.org/3/library/profile.html?spm=5176.100239.0.0.qa5fU5

来源:https://www.cnblogs.com/petewell/p/11584648.html

0
投稿

猜你喜欢

  • 1、可以在mode参数中添加'b'字符。所有适合文件对象的相同方法。然而,每种方法都希望并返回一个bytes对象。>&
  • 前言需求背景来源于AI算法通信接口编写…采用python flask框架 解决flask不是生产环境问题一、flask
  • 选择自 xinyuxin912 的 Blog将一个图片以二进制值的形式存入Xml文件中try   { &nbs
  • 最近用vuepress建了个博客,音乐的背景图片需要网络地址。还有博客自动复用的摘要图片也需地址开始用的阿里云的免费对象存储oss,但又是登
  • 最近关于浏览器的最重要的事情就是IE的极光0day漏洞了,这个漏洞导致包括Google在内的多家美国公司受到黑客的攻击,当然也有很多网站被黑
  • 本文实例讲述了Python实现的凯撒密码算法。分享给大家供大家参考,具体如下:一 介绍凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军
  • 什么是字符串格式化,为什么需要这样做?我们有时候刷抖音/B站看到封面很好看,但是进入直播发现,不过如此!想必主播通过某种方式把输出转换为读者
  • 无图形界面的代码编写python代码作为脚本语言,其实最好直接使用vim在字符界面里面直接编写,这才是正道,但是作初学者,其实直接在服务器上
  • 一、Cookie的使用1、什么是Cookie我们都知道,HTTP 协议是无状态的,也就是说,在一次请求响应结束后,服务端不会保留任何对方状态
  • 枚举是常用的功能,看看Python的枚举.from enum import EnumMonth = Enum('Month'
  • 大家好,我是丁小杰。上次和大家分享了Python定时爬取微博热搜示例介绍,堪称摸鱼神器,一个热榜不够看?今天我们再来爬取一下抖音热搜榜,感兴
  • 前言GO语言在WEB开发领域中的使用越来越广泛,Hired 发布的《2019 软件工程师状态》报告中指出,具有 Go 经验的候选人是迄今为止
  • PHP中的MYSQL常用函数1、mysql_connect()-建立数据库连接格式:resource mysql_connect([stri
  • 封装Python将多个值用逗号隔开,进行赋值。会将这些值封装成一个tuple返回#示例a = 1,2type(a)结果:<class
  • 平常我们使用js代码获取的时间都是客户端的时间,那么有什么办法在浏览器中显示的是服务器断的时间吗?请看下面代码:<span id=&q
  • 删除链表中重复的结点: 定义两个指针pre和current两个指针同时往后移动,current指针如果与后一个结点值相同,就独自往前走直到没
  • 昨天还和裕波沟通我没有准备ppt,想以另一种互动的方式来交流。后来想想,每个人都准备了,我不准备也不太好意思,呵呵。今天在webrebuil
  • 刚才运行了一段代码,来查看Request.ServerVariables里面有多少值,看了一下,共50个!代码<%=Request.S
  • 拼接字符串使用“+”运算符可完成对多个字符串的拼接,“+”运算符可以连接多个字符串并产生一个字符串对象。字符串不允许直接与其他类型数据拼接。
  • 博主在开发一些C端小软件时,喜欢用json作为序列化方案,故总结下python中json库常见用法。导包自带的库,无需额外安装。import
手机版 网络编程 asp之家 www.aspxhome.com