【Python第三方包】快速获取硬件信息和使用情况(psutil、platform)
文章目录
- 前言
- 一、psutil包
- 1.1 安装psutil包
- 1.2 psutil 使用方式
- 获取CPU使用率
- 获取内存使用情况
- 将内存的获取的使用情况变成GB和MB
- 获取磁盘使用情况
- 磁盘内存进行转换
- 获取网络信息
- 网络info
- 二、platform
- 2.1 platform的介绍
- 2.2 platform 使用方式
- 获取操作系统的名称
- 获取架构的名称
- 总结
前言
在开发过程中,了解系统的硬件信息和使用情况对于优化性能和解决问题至关重要。Python提供了一些功能强大的第三方包,可以轻松地获取硬件信息和使用情况。本文将介绍两个常用的包:psutil和platform。
一、psutil包
1.1 安装psutil包
我们可以使用
pip install psutil -i https://pypi.tuna.tsinghua.edu.cn/simple
如果你不想使用镜像可以这样安装:
pip install psutil
如果你是ubuntu高版本用户,则只能使用:
pip3 install psutil -i https://pypi.tuna.tsinghua.edu.cn/simple
这个命令进行安装
1.2 psutil 使用方式
获取CPU使用率
psutil.cpu_percent(interval=1)
在psutil.cpu_percent(interval=1)函数中,interval参数代表采样的时间间隔,单位是秒。这参数的作用是指定在多长时间内计算CPU的使用率。
具体来说,当你调用psutil.cpu_percent(interval=1)时,它会在接下来的1秒内监测CPU的使用情况,并返回这段时间内的平均CPU使用率。这个值通常以百分比的形式表示,表示CPU在指定的时间间隔内被使用了多少百分比。这个函数可以用来监测系统的CPU负载,特别是在需要实时监测系统性能的应用中,以便及时采取行动或记录性能数据。
你可以根据具体的需求来调整interval参数的值,以获取不同时间间隔内的CPU使用率数据。较短的时间间隔可以提供更实时的数据,但可能会引入更多的噪音,而较长的时间间隔则会提供更平滑的数据,但可能错过更短时间内的性能波动。
获取内存使用情况
memory_info = psutil.virtual_memory()
直接调用函数即可!
将内存的获取的使用情况变成GB和MB
psutil.virtual_memory()返回的是一个包含系统虚拟内存信息的命名元组,其中包括各种内存指标的值。这些值的单位通常是字节(bytes)。如果你希望将这些值转换成更常见的单位,如MB(兆字节)或GB(千兆字节),你可以使用以下方式进行转换:
从psutil.virtual_memory()返回的命名元组中提取所需的值。
将字节转换为MB或GB,考虑到1MB = 1024KB和1GB = 1024MB。
以下是一个示例代码,展示如何将psutil.virtual_memory()的返回值转换为MB和GB:
import psutil# 获取系统虚拟内存信息
memory_info = psutil.virtual_memory()# 提取总内存、已使用内存、空闲内存的值(单位为字节)
total_memory_bytes = memory_info.total
used_memory_bytes = memory_info.used
free_memory_bytes = memory_info.available # 注意这里使用available而不是free# 转换为MB和GB
total_memory_mb = total_memory_bytes / 1024**2 # 转换成MB
used_memory_mb = used_memory_bytes / 1024**2 # 转换成MB
free_memory_mb = free_memory_bytes / 1024**2 # 转换成MBtotal_memory_gb = total_memory_bytes / 1024**3 # 转换成GB
used_memory_gb = used_memory_bytes / 1024**3 # 转换成GB
free_memory_gb = free_memory_bytes / 1024**3 # 转换成GB# 打印转换后的内存信息
print(f"总内存:{total_memory_mb:.2f} MB / {total_memory_gb:.2f} GB")
print(f"已使用内存:{used_memory_mb:.2f} MB / {used_memory_gb:.2f} GB")
print(f"空闲内存:{free_memory_mb:.2f} MB / {free_memory_gb:.2f} GB")
这个代码会将内存信息从字节单位转换为MB和GB单位,并打印出结果。你可以根据需要对这些值进行进一步处理或显示。
获取磁盘使用情况
disk_info = psutil.disk_usage('/')
psutil.disk_usage(‘/’) 函数用于获取指定路径(在这里是根目录)的磁盘使用情况信息。这个函数的参数是一个字符串,表示要查询的磁盘分区的路径。在这里,‘/’ 表示根目录,通常代表整个根文件系统。
磁盘内存进行转换
返回的对象包含有关磁盘使用情况的信息,包括总容量、已使用容量、可用容量等。这些值通常以字节为单位。如果你想将这些值转换为更常见的单位,如GB(千兆字节)、MB(兆字节)或TB(千兆字节),你可以按以下方法进行转换:
从 psutil.disk_usage(‘/’) 返回的对象中提取所需的值。
将字节转换为GB、MB或TB,考虑到 1GB = 1024MB、1MB = 1024KB、1TB = 1024GB。
以下是一个示例代码,展示如何将 psutil.disk_usage(‘/’) 返回的磁盘使用情况信息转换为GB、MB和TB:
import psutil# 获取根目录磁盘使用情况信息
disk_info = psutil.disk_usage('/')# 提取总容量、已使用容量、可用容量的值(单位为字节)
total_bytes = disk_info.total
used_bytes = disk_info.used
free_bytes = disk_info.free# 转换为GB、MB、TB
total_gb = total_bytes / (1024**3) # 转换成GB
used_gb = used_bytes / (1024**3) # 转换成GB
free_gb = free_bytes / (1024**3) # 转换成GB# 打印转换后的磁盘使用情况信息
print(f"总容量:{total_gb:.2f} GB")
print(f"已使用容量:{used_gb:.2f} GB")
print(f"可用容量:{free_gb:.2f} GB")
这段代码将磁盘使用情况信息从字节单位转换为GB单位,并打印出结果。你可以根据需要对这些值进行进一步处理或显示。
获取网络信息
network_info = psutil.net_io_counters()
网络info
psutil.net_io_counters() 函数返回一个包含网络IO计数器信息的命名元组,包括各种网络接口的输入和输出的统计数据。以下是其中包含的主要信息以及一些示例值:
bytes_sent:已发送的字节数。
bytes_recv:已接收的字节数。
packets_sent:已发送的数据包数量。
packets_recv:已接收的数据包数量。
errin:接收时的错误数据包数量。
errout:发送时的错误数据包数量。
dropin:接收时丢弃的数据包数量。
dropout:发送时丢弃的数据包数量。
示例代码,演示如何获取并列出psutil.net_io_counters() 返回值的信息:
import psutil# 获取网络IO计数器信息
network_info = psutil.net_io_counters()# 提取信息
bytes_sent = network_info.bytes_sent
bytes_recv = network_info.bytes_recv
packets_sent = network_info.packets_sent
packets_recv = network_info.packets_recv
errin = network_info.errin
errout = network_info.errout
dropin = network_info.dropin
dropout = network_info.dropout# 打印信息
print(f"已发送字节数: {bytes_sent} bytes")
print(f"已接收字节数: {bytes_recv} bytes")
print(f"已发送数据包数量: {packets_sent} packets")
print(f"已接收数据包数量: {packets_recv} packets")
print(f"接收时错误数据包数量: {errin} packets")
print(f"发送时错误数据包数量: {errout} packets")
print(f"接收时丢弃的数据包数量: {dropin} packets")
print(f"发送时丢弃的数据包数量: {dropout} packets")
这些信息有助于监测系统的网络活动,包括已发送和已接收的数据量以及网络错误和数据包丢弃情况。这对于网络性能分析和故障排除非常有用。
二、platform
2.1 platform的介绍
platform 是Python内置的库,提供了获取系统一般信息的方法,如操作系统、硬件架构等。
该库易于使用,可以快速获取与操作系统和硬件相关的关键信息。
2.2 platform 使用方式
获取操作系统的名称
platform.system()
获取架构的名称
platform.architecture()
总结
通过使用第三方包psutil和platform,我们可以轻松地获取硬件信息和使用情况。psutil提供了丰富的接口,可以监控CPU、内存、磁盘和网络的使用情况。而platform库则提供了一种简单的方法来获取系统的一般信息,如操作系统和硬件架构。这些工具对于开发人员在性能优化、资源管理和故障排查等方面非常有用。
无论是开发桌面应用程序、服务器端应用还是系统工具,了解硬件信息和使用情况都是至关重要的。这些Python第三方包的使用方便且功能强大,可以帮助开发人员更好地了解系统的运行状况,从而优化应用程序的性能。
尽管本文介绍了psutil和platform这两个常用的包,但Python生态系统中还有其他相关的第三方包可供选择。根据具体的需求和使用场景,你可以进一步探索和尝试适合你项目的其他包。
希望本文能帮助你了解如何快速获取硬件信息和使用情况,为你的开发工作提供便利。
相关文章:

【Python第三方包】快速获取硬件信息和使用情况(psutil、platform)
文章目录 前言一、psutil包1.1 安装psutil包1.2 psutil 使用方式获取CPU使用率获取内存使用情况将内存的获取的使用情况变成GB和MB获取磁盘使用情况磁盘内存进行转换获取网络信息网络info 二、platform2.1 platform的介绍2.2 platform 使用方式获取操作系统的名称获取架构的名称…...

数据结构与算法课后题-第五章(哈夫曼树和哈夫曼编码)
文章目录 选择题1选择题2选择题3选择题4选择题5选择题6选择题7应用题7 选择题1 选择题2 选择题3 需要深究 选择题4 选择题5 选择题6 选择题7 应用题7...

07测试Maven中依赖的范围,依赖的传递原则,依赖排除的配置
依赖的特性 scope标签在dependencies/dependency标签内,可选值有compile(默认值),test,provided,system,runtime,import compile:在项目实际运行时真正要用到的jar包都是以compile的范围进行依赖 ,比如第三方框架SSM所需的jar包test:测试过程中使用的j…...

科技为饮食带来创新,看AI如何打造智能营养时代
在当今社会,快节奏的生活方式、便捷的食品选择以及现代科技的快速发展正深刻地重塑着我们对健康的认知和实践,它已经不再仅仅是一个话题,而是一个备受关注的社会焦点。在这个纷繁复杂的交汇点上,AI技术的介入为我们开辟了前所未有…...

软件测试知识库+1,5款顶级自动化测试工具推荐和使用分析
“工欲善其事必先利其器”,在自动化测试领域,自动化测试工具的核心地位不容置疑的。目前市面上有很多可以支持接口测试的工具,在网上随便一搜就可以出来很多,利用自动化测试工具进行接口测试,可以很好的提高测试效率&a…...
代码随想录算法训练营第23期day22|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
目录 一、(leetcode 669)修剪二叉搜索树 二、(leetcode 108)将有序数组转换为二叉搜索树 三、(leetcode 538)把二叉搜索树转换为累加树 一、(leetcode 669)修剪二叉搜索树 力扣题…...

IDEA中创建Web工程流程
第一步:File--》New--》Project 第二步:填写信息,点击Create 第三步:点击File,点击Project Structure 出现该界面 选择相应的版本,这里我用jdk17,点击apply ,点击ok 第三步:右键文件…...

【论文阅读】基于卷积神经的端到端无监督变形图像配准
📘End-to-End Unsupervised Deformable ImageRegistration with a Convolutional NeuralNetwork 📕《基于卷积神经的端到端无监督变形图像配准》 文章目录 摘要 Abstract. 1.导言 Introduction 附录 References未完待续 to be continued ... 摘要 Abstr…...

【Rust】包和模块,文档注释,Rust格式化输出
文章目录 包和模块包 CrateRust 的标准目录结构 模块 Module用路径引用模块使用super引用模块使用self引用模块结构体和枚举的可见性 使用 use 引入模块及受限可见性基本引入方式绝对路径引入模块相对路径引入模块中的函数 避免同名引用 注释和文档文档注释包和模块级别的注释注…...
leetcode221.最大正方形
最大正方形 可以使用动态规划降低时间复杂度。用 dp(i,j) 表示以 (i,j)为右下角,且只包含 111 的正方形的边长最大值。能计算出所有 dp(i,j)的值,那么其中的最大值即为矩阵中只包含 111 的正方形的边长最大值,其平方即为最大正方形的面积。 …...

低代码技术这么香,如何把它的开发特点发挥到极致?
前言 什么是低代码技术? 低代码是一种可视化软件开发方法,通过最少的编码更快地交付应用程序。图形用户界面和拖放功能使开发过程的各个方面自动化,消除了对传统计算机编程方法的依赖。 文章目录 前言低代码平台怎么选?用友Yonbu…...

drawio简介以及下载安装
drawio简介以及下载安装 drawio是一款非常强大的开源在线的流程图编辑器,支持绘制各种形式的图表,提供了 Web端与客户端支持,同时也支持多种资源类型的导出。 访问网址:draw.io或者直接使用app.diagrams.net直接打开可以使用在线版…...

Sql Server 数据库中的所有已定义的唯一约束 (列名称 合并过了)
查询Sql Server Database中的唯一约束 with UniqueBasic as (SELECTtab.name AS TableName, -- 表名称idx.name AS UniqueName, -- 唯一约束的名称col.name AS UniqueFieldName -- 唯一约束的表字段FROMsys.indexes idxJOIN sys.index_columns idxColON (idx.object_id idxCo…...

elasticsearch (六)filebeat 安装学习
filebeat 安装:文件节拍快速入门:安装和配置 |文件节拍参考 [7.17] |弹性的 (elastic.co) 解压缩后,以配置nginx日志为例。 Nginx module | Filebeat Reference [7.17] | Elastic filebeat 配置中, - module: nginx access: …...
算法通关村第一关|青铜|链表笔记
1.理解 Java 如何构造出链表 在 Java 中,我们创建一个链表类,类中应当有两个属性,一个是结点的值 val ,一个是该结点指向的下一个结点 next 。 next 通俗讲是一个链表中的指针,但是在链表类中是一个链表类型的引用变量…...
【记录】使用Python读取Tiff图像的几种方法
文章目录 PIL.Imagecv2gdal 本文总结了使用 PIL Image, cv2, gdal.Open三种python package 读取多通道Tiff格式遥感影像的方法。 PIL.Image PIL对Tiff只支持两种格式的图像: 多通道8bit图像单通道int16, int32, float32图像 多通道多bit的tiff图像PIL不支持读取…...

JOSEF约瑟 多档切换式漏电(剩余)继电器JHOK-ZBL1 30/100/300/500mA
系列型号: JHOK-ZBL多档切换式漏电(剩余)继电器(导轨) JHOK-ZBL1多档切换式漏电(剩余)继电器 JHOK-ZBL2多档切换式漏电(剩余)继电器 JHOK-ZBM多档切换式漏电…...

Linux部署kubeedge 1.4
文章目录 一、机器信息二、环境准备(所有节点操作)2.1. 修改主机名2.2. 开启路由转发2.3.安装Docker(所有节点)2.4.部署K8S集群(单机版,云端节点) 2.5.安装Mosquitto(只在边缘节点安装)三、安装kubeedge 1.…...
第一章习题
文章目录 x ( t ) j e j w 0 t x(t)je^{jw_0t} x(t)jejw0t x [ n ] j e j w 0 n x[n]je^{jw_0n} x[n]jejw0n 求基本周期: T 2 Π w 0 T\frac{2Π}{w_0} Tw02Π 对x[n],T为有理数才算 1、求信号x(t)2cos(10t1)-sin(4t-1)的基波周期 2 Π 10 Π 5 \frac{2…...

nvm、node、npm解决问题过程记录
在Windows10如何降级Node.js版本:可以尝试将Node.js版本降级到一个较旧的版本,以查看问题是否得以解决。可以使用Node Version Manager (nvm) 来轻松切换Node.js版本,具体完整步骤: 首先,需要安装Node Version Manager…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...