Matplotlib实现CPU监视

Matplotlib作为Python的绘图库,以绘制高质量的插图著称,但其实Matplotlib还是可以实现简单的动画的,虽然Matplotlib不像vispy那样调用OpenGL高性能绘图,但是用于基本的学习科研也是绰绰有余的。本文将修改一个Matplotlib默认的例子,将Matplotlib转换为一个简单的CPU监视器,并简单介绍一下Matplotlib的动画函数的用法。

在正式开工之前,需要了解一下Matplotlib的动画函数:matplotlib. animation. FuncAnimation,这个函数的使用比较复杂,但是原理很简答,首先看一下函数的参数:

class matplotlib.animation.FuncAnimation(fig, func, frames=None, init_func=None, fargs=None, save_count=None, **kwargs)

简单说明一下,在**kwargs中包含着更多的参数,这里选择一个常用的interval函数,interval用来指定每个多少毫秒进行页面刷新,在进行页面刷新的时候,FuncAnimation则会调用func函数并同时根据frames进行绘图。这个frames可以是迭代器,生成器或者是一些列的frames。

下面先期实现简单的动画功能,目标如下图所示:

Matplotlib实现CPU监视

Matplotlib实现CPU监视

实现代码如下:

上面的代码在动画生成的过程中使用了发生器作为frames的生成方法,采样时间为100ms,那么每隔100ms则会从新绘制图像,由于此处是采用随机数绘制的,没有什么规律,因此下面调用Python的psutil模块实现CPU的检测。在psutil模块中使用cpu_percent函数获取CPU的使用率,并且可以在其中设置间隔时间,这里我设置的是1s,时间太短卡电脑,并且将frames的刷新步长也设置为1s,同步刷新一下,基本上可以实现CPU的监视功能:

和任务管理器对比一下:

Matplotlib实现CPU监视

Matplotlib实现CPU监视

Matplotlib实现CPU监视

Matplotlib实现CPU监视

由于任务管理器采样好像只有0.5s,因此显示的效果要更加准确一点,如果需要缩短监视时间,只需要设置上面代码中的cpu_percent函数的时间间隔和frames的刷新间隔即可。

除了上面的方法可以使用Matplotlib的动画显示之外,还可以使用blit直接刷新图形,但是这样有一个缺点就是在动画显示的过程中不能点击图形,也就是刷新过程虽然会显示动画,但是很容易进程卡死,不过显示效果很不错,有兴趣的可以下载研究研究:

Matplotlib实现CPU监视

Matplotlib实现CPU监视

点击下载本文所有源代码:点击下载

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Are you human? Click the Pineapple...