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导出DBF文件到Excel的方法
Jul 25 Python
python套接字流重定向实例汇总
Mar 03 Python
利用python发送和接收邮件
Sep 27 Python
Python中字典和集合学习小结
Jul 07 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
Django进阶之CSRF的解决
Aug 01 Python
python+flask实现API的方法
Nov 21 Python
python 字符串常用方法汇总详解
Sep 16 Python
python生成器推导式用法简单示例
Oct 08 Python
Python imageio读取视频并进行编解码详解
Dec 10 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 Python
python使用信号量动态更新配置文件的操作
Apr 01 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
PHP ajax 分页类代码
2008/11/13 PHP
php 动态执行带有参数的类方法
2009/04/10 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
php简单实现数组分页的方法
2016/04/30 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
jQuery对象[0]是什么含义?
2010/07/31 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
很不错的两款Bootstrap Icon图标选择组件
2016/01/28 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
Node.js连接mongodb实例代码
2017/06/06 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
python一键升级所有pip package的方法
2017/01/16 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
Python转换时间的图文方法
2019/07/01 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
八年级音乐教学反思
2014/01/09 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
建党伟业的观后感
2015/06/01 职场文书
迁徙的鸟观后感
2015/06/09 职场文书