Python使用psutil库对系统数据进行采集监控的方法


Posted in Python onAugust 23, 2021

大家好,我是辰哥~

今天给大家介绍一个可以获取当前系统信息的库——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)

Python使用psutil库对系统数据进行采集监控的方法

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

这里获取的内存是的单位是字节,所以需要通过除以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)

Python使用psutil库对系统数据进行采集监控的方法

获取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())

Python使用psutil库对系统数据进行采集监控的方法

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

其中第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])

Python使用psutil库对系统数据进行采集监控的方法

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

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

mac和linux系统命令:ifconfig

window系统命令:ipconfig

部分截图如下:

Python使用psutil库对系统数据进行采集监控的方法

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

获取当前网速

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

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')

Python使用psutil库对系统数据进行采集监控的方法

代码中的['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库对系统数据进行采集监控的方法

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

今天的文章就到这里了

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

最后

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

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

耐得住寂寞,才能登得顶
Gitee码云:https://gitee.com/lyc96/projects

到此这篇关于Python使用psutil库对系统数据进行采集监控的方法的文章就介绍到这了,更多相关Python psutil系统监控内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python网络编程之读取网站根目录实例
Sep 30 Python
Python多线程和队列操作实例
Jun 21 Python
import的本质解析
Oct 30 Python
详谈python3中用for循环删除列表中元素的坑
Apr 19 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
Django组件content-type使用方法详解
Jul 19 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
Aug 23 Python
Python实现CAN报文转换工具教程
May 05 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
Python实现仓库管理系统
May 30 Python
Python 中的Sympy详细使用
Aug 07 #Python
Anaconda配置各版本Pytorch的实现
Aug 07 #Python
python开发的自动化运维工具ansible详解
Python初识逻辑与if语句及用法大全
Aug 07 #Python
python之json文件转xml文件案例讲解
Aug 07 #Python
一篇文章弄懂Python中的内建函数
Aug 07 #Python
Python 可迭代对象 iterable的具体使用
Aug 07 #Python
You might like
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
php正则修正符用法实例详解
2016/12/29 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Python内置模块logging用法实例分析
2018/02/12 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
客户代表实习人员自我鉴定
2013/09/27 职场文书
大学新学期计划书
2014/04/28 职场文书
模特大赛策划方案
2014/05/28 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
创业计划书之游泳馆
2019/09/16 职场文书
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js