Python使用psutil对系统数据进行采集监控
作者:Python研究者 发布时间:2023-03-13 07:21:19
今天给大家介绍一个可以获取当前系统信息的库——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)
可以获取到本机开机时间,以及当前使用的用户
来源:https://www.cnblogs.com/chenlove/p/15165065.html
猜你喜欢
- 开发过程中的数据库结构结构,不可避免的会需要反复的修改。最麻烦的情况莫过于开发者数据库结构已经修改,而实际应用中数据库又有大量数据,如何在不
- 起步走 #! /usr/bin/python a=2 b=3 c="test" c=a+b print "ex
- 前不久网上公开了一个MySQL Func的漏洞,讲的是使用MySQL创建一个自定义的函数,然后通过这个函数来攻击服务器。最早看到相关的报道是
- 各种坑用py2exe,不支持,仅支持2.x用cx_frezee,各种问题方法 用pyinstaller。安装时务必用pip3 install
- 本文实例为大家分享了js编写贪吃蛇小游戏的具体代码,供大家参考,具体内容如下刚学完js模仿着教程,把自己写的js原生小程序。HTML部分&l
- 【错误原因】:mysql_query执行超时.【解决办法】:修改php.ini中的 max_execution_time的值,默认为300,
- 前言字典是 Python 中很重要的数据类型,有很多内置函数需要了解。1.dict.clear清除字典中所有键值对。dict = {'
- 前言Pillow库有很多用途,本文使用Pillow来生成随机的验证码图片。Pillow的用法参考:https://www.jb51.net/
- Redis通常被认为是一种持久化的存储器关键字-值型存储,可以用于几台机子之间的数据共享平台。连接数据库 注意:假设现有几台在同一局域网内的
- 在为一个项目添加权限时,遇到一个问题,就是为项目所有的url设置权限,但是一个一个手动输入太麻烦了,所以考虑用代码获取到一个项目所有的url
- <% dim conn,mdbfile mdbfile=server.mappath("数据库名称.mdb") s
- 本文实例讲述了python实现合并两个数组的方法。分享给大家供大家参考。具体如下:python合并两个数组,将两个数组连接成一个数组,例如,
- 项目环境:python3.6,django2.1接口功能: 将传入参数a和b字符串相加,返回结果1.新建一个django项目# 新建一个名为
- 说说最近的一个案例吧,线上阿里云RDS上的一个游戏日志库最近出现了一点问题,随着游戏人数的增加,在线日
- 题目描述724. 寻找数组的中心下标 - 力扣(LeetCode) (leetcode-cn.com)给你一个整数数组 nums
- 获取用户信息调用 wx.getUserProfile 方法获取用户基本信息。页面产生点击事件(例如 button 上 bindtap 的回调
- 目录实例031:字母识词实例032:反向输出II实例033:列表转字符串实例034:调用函数实例035:设置输出颜色实例036:算素数实例0
- python爬虫模块PyQuery简介PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,
- 1、权限赋予 说明:mysql部署在服务器A上,内网上主机B通过客户端工具连接服务器A以进行数据库操作,需要服务器A赋予主机B操作mysql
- SQL SERVER 2000安装教程:https://www.jb51.net/article/37380.htm1、如果您的SQL空间开