1、cProfile
2、line_profiler
3、pprofile
4、vprof
测量CPU使用率
对于这篇文章,我将主要使用与内存分析中使用脚本相同的脚本,具体如下:
另外,请记住,在PyPy2中,您需要使用与之配合的pip版本:
并且其他依赖项也将被安装:
cProfile
在讨论CPU分析时,最常用的工具之一是cProfile,主要是因为它内置在CPython2和PyPy2中。这是一个确定性的分析器,意味着在运行程序时会收集一组统计数据,例如我们代码的各个部分的执行次数或执行时间。此外,cProfile在系统上的开销比其他内置的分析器(配置文件)要低。
CPython2的用法很简单:
如果您使用PyPy2:
其输出如下:
即使使用这个文本输出,很容易看到我们的脚本多次调用了list.append方法。
如果我们使用gprof2dot,我们可以以图形的方式看到cProfile输出。要使用它,我们必须首先安装graphviz,之后是一些依赖包,最后在Ubuntu上使用如下命令:
再次运行脚本:
我们得到以下output.png文件:
这样更容易看到一切。我们来仔细看看它的输出。您可以看到脚本中的函数调用如下:
1、第一行:Python文件名,行号和方法名称
2、第二行:代码块占用全部时间的百分比
3、第三行:括号中,方法本身占全部时间的百分比
4、第四行:调用函数的次数
例如,在顶部的第三个红色方块中,方法primes占用了98.28%的时间,其中65.44%的内容在其中进行,调用了40次。其余的时间花在Python中的list.append(22.33%)和range(11.51%)中。
作为一个简单的脚本,我们只需要重写我们的脚本,具体的如下所示:
如果我们使用CPython2测量我们脚本的时间,
还有PyPy2:
我们通过使用PyPy2的CPython2和3.1X获得了不错的效果,下面是cProfile的调用流程图:
您还可以以编程方式使用cProfile,例如:
这在某些情况下很有用,例如多进程性能测量
line_profiler
此分析器在行级提供关于工作负载的信息。它使用Cython在C中实现,并将其与cProfile进行比较时发现其具有较小的开销。
源代码可以在这里找到,也可以在这里找到PyPI页面。与cProfile相比,它具有一样的开销,不过却要花费12倍的时间来获取配置文件。
要使用它,您需要先通过pip添加它:pip install pip install Cython ipython == 5.4.1 line_profiler(CPython2)。这个分析器的一个主要缺点是它不支持PyPy。
就像使用memory_profiler一样,您需要在要分析的函数中添加一个装饰器。在我们的例子中,您需要在03.primes-v1.py中定义我们的primes函数之前添加@profile。然后调用它:
你将得到如下输出:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)
49b566129f47b8a67243c1008edf79.png)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)