写点什么

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

发布于: 1 小时前

大家好,我是辰哥~


今天给大家介绍一个可以获取当前系统信息的库——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 / 1024print('系统总计内存:%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 / 1024used = dk.used / 1024 / 1024 / 1024free = dk.free / 1024 / 1024 / 1024print('系统总计磁盘:%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_recvprint(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)
复制代码



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


今天的文章就到这里了


有任何疑问小伙伴们欢迎下方留言讨论哈~

最后

1. 本文详细介绍了 python 通过 psutil 获取系统信息(内存,磁盘,cpu 等)


2. 本文仅供读者学习使用,不做其他用途!

发布于: 1 小时前阅读数: 2
用户头像

个人公众号:Python研究者 2021.04.26 加入

教你如何学Python,专注于Python入门与进阶、爬虫、数据分析挖掘、数据可视化。分享Python相关的技术文章、工具资源、视频教程、学习资料。

评论

发布
暂无评论
Python对系统数据进行采集监控——psutil