CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了
在这篇文┞仿中,我将评论辩论一个对象,用以分析Python中CPU应用情况。CPU分析是经由过程分析CPU履行代码的方法来测量代码的机能,以此找到代码中的不当之处,然后处理它们。
接下来我们将看看若何跟踪Python脚本应用时CPU应用情况,重点存眷以下几个方面:
1、cProfile
2、line_profiler
3、pprofile
测量CPU应用率
对于这篇文┞仿,我将重要应用与内存分析中应用脚本相同的脚本,具体如下:

别的,请记住,在PyPy2中,您须要应用与之合营的pip版本:

并且其他依附项也将被安装:

cProfile
在评论辩论CPU分析时,最常用的对象之一是cProfile,主如果因为它内置在CPython2和PyPy2中。这是一个肯定性的分析器,意味着在运行法度榜样时会收集一组统计数据,例如我们代码的各个部分的履行次数或履行时光。此外,cProfile在体系上的开销比其他内置的分析器(设备文件)要低。
CPython2的用法很简单:

如不雅您应用PyPy2:

其输出如下:

即使应用这个文本输出,很轻易看到我们的脚本多次调用了list.append办法。

再次运行脚本:

我们获得以下output.png文件:

如许更轻易看到一切。我们来细心看看它的输出。您可以看到脚本中的函数调用如下:
1、第一行:Python文件名,行号和办法名称
2、第二行:代码块占用全部时光的百分比
4、第四行:调用函数的次数
1、CPU应用图
例如,在顶部的第三个红色方块中,办法primes占用了98.28%的时光,个中65.44%的内容在个中进行,调用了40次。其余的时光花在Python中的list.append(22.33%)和range(11.51%)中。
作为一个简单的脚本,我们只须要重写我们的脚本,具体的如下所示:

4、代码热图
如不雅我们应用CPython2测量我们脚本的时光,

还有PyPy2:

我们经由过程应用PyPy2的CPython2和3.1X获得了不错的效不雅,下面是cProfile的调用流程图:

您还可以以编程方法应用cProfile,例如:

这在某些情况下很有效,例如多过程机能测量
源代码可以在这里找到,也可以在这里找到PyPI页面。与cProfile比拟,它具有一样的开销,不以前要花费12倍的时光来获取设备文件。
要应用它,您须要先经由过程pip添加它:pip install pip install Cython ipython == 5.4.1 line_profiler(CPython2)。这个分析器的一个重要缺点是它不支撑PyPy。

你将获得如下输出:

我们看到,反复调用list.append的两个轮回花了最多的时光。
pprofile
根据作者解释,pprofile是一个“线程测量和统计的纯python分析器”。
它受到line_profiler的启发,修复了很多缺点,然则因为它完全用Python编写,所以它也可以与PyPy成功应用。与cProfile比拟,应用CPython时的分析时光要多28倍,而应用PyPy时,分析时光要多10倍,并且细节程度加倍细化。
推荐阅读
CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了 人工神经收集(ANN)以大年夜脑处理机制造为基本,开辟用于建立复杂模式和猜测问题的算法。起首懂得大年夜脑若何处理信息:在>>>详细阅读
本文标题:Python脚本分析CPU使用情况
地址:http://www.17bianji.com/lsqh/39359.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示