如何使用python分析CPU使用情况? 大概是这样吧

简介: 前言现在小编给大家分享一个可以分析CPU使用情况的代码,CPU分析是通过分享CPU执行代码的方式来测量代码的性能,以此来找到代码的不妥之处,然后处理它们,接下来我们将看看如何跟踪python脚本使用时CPU使用情况,重点关注几个方面 :1、cProfile2、line_profiler3、...

前言
现在小编给大家分享一个可以分析CPU使用情况的代码,CPU分析是通过分享CPU执行代码的方式来测量代码的性能,以此来找到代码的不妥之处,然后处理它们,

接下来我们将看看如何跟踪python脚本使用时CPU使用情况,重点关注几个方面 :

1、cProfile

2、line_profiler

3、pprofile

4、vprof

测量CPU使用率,主要使用与内存分析中使用脚本相同的脚本,具体如下:

import time

def primes(n):
      if n == 2 :
        return [2]
     elif n < 2:
        return []
     s = []
  for i in range(3,n+1) :
      if i % 2 !=0 :
        s.append(i)
  mroot = n ** 0.5
  half = (n+1) / 2 - 1
  i = 0
 m = 3
while  m <= mroot :
if s[i]:
    j = (m * m - 3)  / 2
    s[j] = 0
    while j < half :
     s[j] = 0
      j += m
i =  i + 1
m = 2 * i + 3
l  = [2]
 for x in s :
if x:
l.append(x)
return l 

def benckmark():
start = time.time()
for _ in xrange(40):
    count = len(primes(1000000))
end = time.time()
print "Benchmark   duration : %r secounds" % (end - start)

另外,请记住,在PyPy2中,你需要使用与之配合的pip版本:

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

cProfile

在讨论CPU分析时,最常用的工具之一是cProfile,主要是因为它内置在CPython2和PyPy2中。这是一个确定性的分析器,意味着在运行程序时会收集一组统计数据,例如我们代码的各个部分的执行次数或执行时间。此外,cProfile在系统上的开销比其他内置的分析器(配置文件)要低。

CPython2的用法很简单:

如果你使用PyPy2:

其输出如下:

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

如果我们使用gprof2dot,我们可以以图形的方式看到cProfile输出。要使用它,我们必须首先安装graphviz,之后是一些依赖包,最后在Ubuntu上使用如下命令:

再次运行脚本:

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

学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习python或者有兴趣学习python的伙伴可以私信回复小编“学习”或者评论,留言,点赞 领取全套免费python学习资料、视频()装包

这样更容易看到一切。我们来仔细看看它的输出。你可以看到脚本中的函数调用如下:

第一行:Python文件名,行号和方法名称

第二行:代码块占用全部时间的百分比

第三行:括号中,方法本身占全部时间的百分比

第四行:调用函数的次数

例如,在顶部的第三个红色方块中,方法primes占用了98.28%的时间,其中65.44%的内容在其中进行,调用了40次。其余的时间花在Python中的list.append(22.33%)和range(11.51%)中。

作为一个简单的脚本,我们只需要重写我们的脚本,具体的如下所示:

如果我们使用CPython2测量我们脚本的时间,

还有PyPy2:

我们通过使用PyPy2的CPython2和3.1X获得了不错的效果,下面是cProfile的调用流程图:
image
你还可以以编程方式使用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上,显示代码散热图(第一个调用如下)和代码分析(下面的第二个调用):

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

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

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

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

相关文章
|
1月前
|
Shell 索引 Python
如何使用Python进行时间序列分析
如何使用Python进行时间序列分析
19 0
|
15天前
|
Python
【python】爬楼梯—递归分析(超级详细)
【python】爬楼梯—递归分析(超级详细)
|
29天前
|
索引 Python
如何在Python中,Pandas库实现对数据的时间序列分析?
Pandas在Python中提供强大的时间序列分析功能,包括:1) 使用`pd.date_range()`创建时间序列;2) 通过`pd.DataFrame()`将时间序列转为DataFrame;3) `set_index()`设定时间列作为索引;4) `resample()`实现数据重采样(如按月、季度);5) `rolling()`进行移动窗口计算,如计算移动平均;6) 使用`seasonal_decompose()`进行季节性调整。这些工具适用于各种时间序列分析场景。
27 0
|
29天前
|
Python
请解释Python中的主成分分析(PCA)以及如何使用Sklearn库实现它。
PCA是数据降维工具,Python中可通过Sklearn的PCA类实现。以下是一简例:导入numpy、PCA和iris数据集;标准化数据;创建PCA对象并设定保留主成分为2;用PCA对象处理数据;最后展示降维结果。示例使用鸢尾花数据集从高维降至二维。可按需调整参数以优化效果。
13 0
|
1月前
|
数据采集 数据可视化 数据挖掘
使用Python编写Web爬虫实现数据采集与分析
在当今信息化时代,数据是企业发展和决策的重要依据。本文将介绍如何使用Python编写Web爬虫来实现对特定网站数据的自动采集,并结合数据分析技术,为读者展示如何利用爬虫技术获取有价值的信息并进行有效的数据处理和分析。
|
5天前
|
机器学习/深度学习 人工智能 算法
图像处理与分析:Python中的计算机视觉应用
【4月更文挑战第12天】Python在计算机视觉领域广泛应用,得益于其丰富的库(如OpenCV、Pillow、Scikit-image)和跨平台特性。图像处理基本流程包括获取、预处理、特征提取、分类识别及重建生成。示例代码展示了面部和物体检测,以及使用GAN进行图像生成。
|
30天前
|
存储 数据可视化 索引
如何使用Python的Statsmodels库进行时间序列分析?
如何使用Python的Statsmodels库进行时间序列分析?
17 0
|
1天前
|
数据采集 NoSQL 搜索推荐
五一假期畅游指南:Python技术构建的热门景点分析系统解读
五一假期畅游指南:Python技术构建的热门景点分析系统解读
|
3天前
|
算法 数据可视化 Python
使用Python实现主成分分析(PCA)
使用Python实现主成分分析(PCA)
21 4
|
15天前
|
人工智能 机器人 数据挖掘
【python】电影评分数据集的分析(python实现)(源码+报告)【独一无二】
【python】电影评分数据集的分析(python实现)(源码+报告)【独一无二】

热门文章

最新文章