天涯论坛

 找回密码
 立即注册
搜索
查看: 58|回复: 2

怎么样运用Python脚本分析CPU的运用状况?

[复制链接]

3073

主题

148

回帖

9911万

积分

论坛元老

Rank: 8Rank: 8

积分
99118900
发表于 2024-8-17 20:56:07 | 显示全部楼层 |阅读模式

博主大众分享一个工具,用以分析Python中CPU运用状况。CPU分析是经过分析CPU执行代码的方式来测绘代码的性能,以此找到代码中的不当之处,而后处理它们。

接下来咱们瞧瞧怎样跟踪Python脚本运用时CPU运用状况,重点关注以下几个方面:

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文件:

欢迎大众加入博主创建的Python行业交流群,有大牛答疑,有资源共享,有企业招人!是一个非常不错的交流基地!群号:683380553

这般更易看到一切。咱们来仔细瞧瞧它的输出。你能够看到脚本中的函数调用如下:

第1行:Python文件名,行号和办法叫作

第二行:代码块占用所有时间的百分比

第三行:括号中,办法本身占所有时间的百分比

第四行:调用函数的次数

例如,在顶部的第三个红色方块中,办法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。而后调用它:

你将得到如下输出:

咱们看到,重复调用list.append的两个循环花了最多的时间。

pprofile

按照作者说明,pprofile是一个“线程测绘和统计的纯python分析器”。

它受到line_profiler的启发,修复了非常多缺点,然则因为它完全用Python编写,因此能够与PyPy成功运用。与cProfile相比,运用CPython时的分析时间要多28倍,而运用PyPy时,分析时间要多10倍,况且细节水平更加细化。

咱们支持PyPy!除此之外,它支持剖析线程,这在各样状况下可能会很方便。

运用它,你必须经过pip添加它:pip install pprofile(CPython2)/ pypy -m pip install pprofile(PyPy)而后调用它:

输出与咱们以前看到的区别咱们得到如下结果:

咱们此刻能够仔细地看到一切。让咱们瞧瞧输出。你能够得到脚本的全部输出,并且在每行之前,你能够看到对其进行的调用次数,运行时间(秒),每次调用的时间和全局时间的百分比,pprofile为咱们的输出添加了额外的行(如第44和50行,以(call)开头)与累积指标。

再次,咱们看到,重复调用list.append的两个循环花了咱们脚本中最多的时间。

vprof

vprof是一个Python分析器,为各样Python程序特性(如运行时间和内存运用供给丰富的交互式可视化。它是一个基于Node.JS的图形化的表示在网页中的结果。

运用它,你能够看到与Python脚本关联的以下一个或所有

1、CPU运用

2、代码分析

3、内存图

4、代码热图

运用它,你必须经过pip添加它:pip install vprof(CPython2)/ pypy -m pip install vprof(PyPy)而后调用它:

在CPython2上,表示代码散热图(第1个调用如下)和代码分析(下面的第二个调用):

在PyPy上,表示代码散热图(第1个调用如下)和代码分析(下面的第二个调用):

在每种状况下,你将看到代码散点图的以下内容

以及代码分析的以下内容。

结果以图形方式看到,咱们能够悬停鼠标或单击每行以获取更加多信息。再次,咱们看到,重复调用list.append的两个循环花了咱们脚本中最多的时间。

情人节有奖专题中奖名单颁布





上一篇:怎么样利用并发性加速你的python程序(三):CPU 绑定程序加速
下一篇:Python运行速度慢?是你孤陋寡闻了?5个优化办法提速百分百
回复

使用道具 举报

3121

主题

2万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99108633
发表于 2024-9-29 07:26:09 | 显示全部楼层
这篇文章真的让我受益匪浅,外链发布感谢分享!
回复

使用道具 举报

3069

主题

2万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99138952
发表于 2024-10-3 10:45:05 | 显示全部楼层
外贸B2B平台有哪些?
回复

使用道具 举报

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

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-22 17:16 , Processed in 0.123376 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.