Python对系统数据进行采集监控——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)
可以获取到本机开机时间,以及当前使用的用户
今天的文章就到这里了
有任何疑问小伙伴们欢迎下方留言讨论哈~
最后
1. 本文详细介绍了python通过psutil获取系统信息(内存,磁盘,cpu等)
2. 本文仅供读者学习使用,不做其他用途!
Python对系统数据进行采集监控——psutil的更多相关文章
- Python数据网络采集5--处理Javascript和重定向
Python数据网络采集5--处理Javascript和重定向 到目前为止,我们和网站服务器通信的唯一方式,就是发出HTTP请求获取页面.有些网页,我们不需要单独请求,就可以和网络服务器交互(收发信息 ...
- [Python监控]psutil模块简单使用
安装很简单 pip install psutil 官网地址为 https://pythonhosted.org/psutil/ (文档上有详细的api) github地址为 https://githu ...
- python数据分析4之自动采集数据
1 数据采集的重要性 数据采集是数据挖掘的基础,没有数据,挖掘也没有意义.很多时候,我们拥有多少数据源,多少数据量,以及数据质量如何,将决定我们挖掘产出的成果会怎样 2 四类采集方式 3 如何使用开放 ...
- 使用 PushGateway 进行数据上报采集
转载自:https://cloud.tencent.com/developer/article/1531821 1.PushGateway 介绍 Prometheus 是一套开源的系统监控.报警.时间 ...
- 为什么说Python 是大数据全栈式开发语言
欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...
- python+Django实现Nagios自动化添加监控项目
最近机房刚上了一批机器(有100台左右),需要使用Nagios对这一批机器进行监控.领导要求两天时间完成所有主机的监控.从原来的经验来看,两天时间肯定完成不了.那怎么办?按照之前的想法,肯定是在nag ...
- 大数据学习——采集文件到HDFS
采集需求:比如业务系统使用log4j生成的日志,日志内容不断增加,需要把追加到日志文件中的数据实时采集到hdfs 根据需求,首先定义以下3大要素 l 采集源,即source——监控文件内容更新 : ...
- python获取系统内存占用信息的实例方法
psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控, ...
- 不存在的!python说不给数据的浏览器是不存在的!
有时候我们些代码是总发此疑惑? 为什么别人采集 xx 网站的时候能成功,而我却总是不返回给数据出现这种原因时往往是我们没有给够伪装, 被识别了出来~ 就像人,你出门肯定是要穿衣服的对不,如果你不穿! ...
随机推荐
- buu crypto 幂数加密
一.这和二进制幂数加密有些不同,可以从数字大小判断出来,超过4了,一般4以上已经可以表达出31以内了,所以是云影密码,以0为分隔符,01248组成的密码 二.python代码解密下 code=&quo ...
- 『心善渊』Selenium3.0基础 — 23、Selenium元素等待
目录 1.什么是元素等待 2.为什么要设置元素等待 3.Selenium中常用的等待方式 4.强制等待 5.隐式等待 (1)隐式等待介绍 (2)示例 6.显式等待 (1)显式等待介绍 (2)语法 (3 ...
- WPF项目升级sqlite-net-pcl时遇到Library e_sqlite3 not found的问题解决办法记录
项目中为了方便的存储本地数据,使用了SQLite数据库作为数据存储,再设计时DB.models引用了sqlite-net-pcl,那么项目再升级sqlite-net-pc 1.7.335l版本后后,遇 ...
- M1卡分类
M1卡复制前文说到,每一张M1卡的0扇区0块都是出厂时厂商赋予的绝对地址块,我们无法在M1卡内直接修改它. 说到这不得不提一下M1卡的复制子卡--UID卡,FUID卡,CUID卡. UID卡UID卡是 ...
- 泛型(8)-Java7的"菱形"语法与泛型构造器
正如泛型方法允许在方法签名中声明泛型形参一样,Java也允许在构造器签名中声明泛型形参,这样就产生了所谓的泛型构造器. package com.j1803;class Foo{ public < ...
- Leetcode No.14 Longest Common Prefix最长公共前缀(c++实现)
1. 题目 1.1 英文题目 Write a function to find the longest common prefix string amongst an array of strings ...
- Abp太重了?轻量化Abp框架
本文首发于个人博客(https://blog.zhangchi.fun/) 在进行框架的选型时,经常会听到"***框架太重了"之类的声音,比如"Abp太重了,不适合我们. ...
- python + Excel数据读取(更新)
data.xlsx 数据如下: import xlrd#1.读取Excel数据# table = xlrd.open_workbook("data.xlsx","r&qu ...
- C++第五十二篇 -- 多线程之消息传递
主线程向子线程发送消息 参考链接:https://www.cnblogs.com/ranjiewen/p/5729539.html 1. 创建线程语句 HANDLE hThread; DWORD dw ...
- python之 数据类型限制
问题增加类型限制 NameError: name 'List' is not defined def twoSum(self, nums: List[int], target: int) -> ...