Python使用psutil对系统数据进行采集监控

 更新时间:2021年08月20日 15:37:14   作者:Python研究者  
psutil库可以实时获取系统的一些信息,这样就可以达到实时监控系统的目的。本文对详细讲解了ython使用psutil对系统数据进行采集监控,感兴趣的朋友可以看一看

今天给大家介绍一个可以获取当前系统信息的库——psutil

利用psutil库可以获取系统的一些信息,如cpu,内存等使用率,从而可以查看当前系统的使用情况,实时采集这些信息可以达到实时监控系统的目的。

psutil库

psutil的安装很简单

pip install psutil

psutil库可以获取哪些系统信息?

psutil有哪些作用
1.内存使用情况
2.磁盘使用情况
3.cpu使用率
4.网络接口发送接收流量
5.获取当前网速
6.系统当前进程
...下面通过具体代码案例进行演示

内存使用情况

import psutil
#内存
mem = psutil.virtual_memory()
# 系统总计内存
zj = float(mem.total) / 1024 / 1024 / 1024
# 系统已经使用内存
ysy = float(mem.used) / 1024 / 1024 / 1024
# 系统空闲内存
kx = float(mem.free) / 1024 / 1024 / 1024
print('系统总计内存:%d.4GB' % zj)
print('系统已经使用内存:%d.4GB' % ysy)
print('系统空闲内存:%d.4GB' % kx)

获取当前系统总内存,已使用内存,以及空闲内存

这里获取的内存是的单位是字节,所以需要通过除以1024转为G,下面同样如此就不再重复解释。

获取系统cpu信息

#显示cpu所有逻辑信息
print(psutil.cpu_times(percpu=True))
# 查看cpu逻辑个数的信息
print(u"逻辑CPU个数: %s" % psutil.cpu_count())
# 查看cpu物理个数的信息
print(u"物理CPU个数: %s" % psutil.cpu_count(logical=False))
#CPU的使用率
cpu = (str(psutil.cpu_percent(1))) + '%'
print(u"cup使用率: %s" % cpu)

获取cpu信息,以及本机cpu个数(包括逻辑cpu数和物理cpu数),当前的cpu使用率(每隔1秒获取一次,获取查看实时cpu使用率情况)

系统磁盘使用情况

part = psutil.disk_partitions()
for i in part:
    print(i)
dk = psutil.disk_usage('/')
print(dk)
#总磁盘
total = dk.total / 1024 / 1024 / 1024
used = dk.used / 1024 / 1024 / 1024
free = dk.free / 1024 / 1024 / 1024
print('系统总计磁盘:%d.3GB' % total)
print('系统已经使用磁盘:%d.3GB' % used)
print('系统空闲磁盘:%d.3GB' % free)
print(u"磁盘使用率: %s%%" % dk.percent)
# 获取磁盘总的io个数,读写信息
print(psutil.disk_io_counters())

前面几行是当前系统可以访问的磁盘信息

其中第1行mountpoint='/',表示当前本机默认磁盘

其中第6行mountpoint='/Volumes/Extreme SSD',表示外接固态移动硬盘

这里以本机磁盘mountpoint='/'为例,查看磁盘的使用情况(总容量,已使用,空闲容量,使用率)

最后一行的每一个字段的含义如下:

"""
    read_count 读IO数
    write_count 写IO数
    read_bytes 读IO字节数
    write_bytes 写IO字节数
    read_time 磁盘读时间
    write_time 磁盘写时间
"""

获取系统网卡信息

# 获取网络总IO信息
print(psutil.net_io_counters())
# 发送数据包
print("发送数据字节:", psutil.net_io_counters().bytes_sent,"bytes")
#接收数据包
print("接收数据字节:",psutil.net_io_counters().bytes_recv,"bytes")
# 输出网络每个接口信息
net_counter = psutil.net_io_counters(pernic=True)
for i in net_counter:
    print("网卡:"+i+" ,网卡信息:",net_counter[i])

可以获取到当前本机中存在哪些网卡,以及发送和接收的流量是多少

通过在终端中查看本机的网卡是否一致

mac和linux系统命令:ifconfig

window系统命令:ipconfig

部分截图如下:

可以看到程序获取的网卡数据和本机终端获取是一致的

获取当前网速

通过上面的程序获取网卡发送和接收的流量来获取当前网速

s1 = psutil.net_io_counters(pernic=True)['en0']
time.sleep(1)
s2 = psutil.net_io_counters(pernic=True)['en0']
result = s2.bytes_recv - s1.bytes_recv
print(str('%d' % (result / 1024)) + 'kb/s')

代码中的['en0']表示获取en0网卡的数据,因为辰哥本机的网卡是en0

最后可以看到获取当前网速情况

每个1秒执行该代码可以实现实时获取网速

其他功能

# 系统开机时间
# 转换成自然时间格式
print(datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S"))
#获取当前系统用户登录信息
users = psutil.users()
for i in users:
    print(i)

可以获取到本机开机时间,以及当前使用的用户

以上就是Python使用psutil对系统数据进行采集监控的详细内容,更多关于python使用psutil对系统数据的资料请关注脚本之家其它相关文章!

相关文章

  • 让python json encode datetime类型

    让python json encode datetime类型

    python2.6+ 自带的json模块,不支持datetime的json encode,每次都需要手动转为字符串,很累人,我们可以自己封装一个简单的方法处理此问题。
    2010-12-12
  • Python实现链表反转的方法分析【迭代法与递归法】

    Python实现链表反转的方法分析【迭代法与递归法】

    这篇文章主要介绍了Python实现链表反转的方法,结合实例形式分析了Python迭代法与递归法实现链表反转的相关操作技巧与注意事项,需要的朋友可以参考下
    2020-02-02
  • python多进程 主进程和子进程间共享和不共享全局变量实例

    python多进程 主进程和子进程间共享和不共享全局变量实例

    这篇文章主要介绍了python多进程 主进程和子进程间共享和不共享全局变量实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python pip安装库时存在缓存以及清除方法

    Python pip安装库时存在缓存以及清除方法

    这篇文章主要给大家介绍了关于Python pip安装库时存在缓存以及清除方法的相关资料,我们在安装Python库时,是安装版的话一般都通过 pip install xxx 来安装包,但安装下载的文件都会缓存下来,而且一般都在C盘,需要的朋友可以参考下
    2023-08-08
  • 简单的命令查看安装的python版本号

    简单的命令查看安装的python版本号

    在本篇内容里小编给大家整理的是关于简单的命令查看安装的python版本号的文章,需要的朋友们可以参考下。
    2020-08-08
  • python学习基础之循环import及import过程

    python学习基础之循环import及import过程

    python中的import语句是用来导入模块的,下面这篇文章主要给大家介绍了关于python学习基础之循环import及import过程的相关资料,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-04-04
  • Python日志处理模块logging用法解析

    Python日志处理模块logging用法解析

    这篇文章主要介绍了Python日志处理模块logging用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 关于numpy.where()函数 返回值的解释

    关于numpy.where()函数 返回值的解释

    今天小编就为大家分享一篇关于numpy.where()函数 返回值的解释,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 关于python中readlines函数的参数hint的相关知识总结

    关于python中readlines函数的参数hint的相关知识总结

    今天给大家带来的是关于Python函数的相关知识,文章围绕着python中readlines函数的参数hint展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 利用Rust实现Python加速的技巧分享

    利用Rust实现Python加速的技巧分享

    这篇文章主要想来和大家一起探讨一下关于使用Rust对Python计算进行加速的问题,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-09-09

最新评论