【Python第三方包】快速获取硬件信息和使用情况(psutil、platform)

news2024/12/23 23:28:21

文章目录

  • 前言
  • 一、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  # 转换成MB

total_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生态系统中还有其他相关的第三方包可供选择。根据具体的需求和使用场景,你可以进一步探索和尝试适合你项目的其他包。

希望本文能帮助你了解如何快速获取硬件信息和使用情况,为你的开发工作提供便利。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1098776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

unapp项目发布h5 详细操作流程以及注意事项 (hash模式)

首先需要在manifest.json文件中的web配置中 这里因为公司项目都是hash模式 所以写的./ 接下来看源码视图会发现多了一个配置项: 接下来点击hbx上面的 发行》网站-PC Web或手机H5(仅适用于uni-app)(H) 此时查看控制台会显示打包后的存放路径 接下来就直接给后端同…

Windows下Redis3.0主从模式架构搭建

redis版本:Redis-x64-3.0.504 复制相同文件 修改文件夹下redis.windows.conf 文件配置(注意:主有密码,从必须有密码且跟主相同) 修改端口: 主库:端口号6379 从库1:修改端口号为6380 从库2:修…

金融用户实践|分布式存储支持数据仓库业务系统性能验证

作者:深耕行业的 SmartX 金融团队 闫海涛 估值是指对资产或负债的价值进行评估的过程,这对于投资决策具有重要意义。每个金融公司资管业务人员都期望能够实现实时的业务估值,快速获取最新的数据和指标,从而做出更明智的投资决策。…

【学习笔记】RabbitMQ01:基础概念认识以及快速部署

参考资料 RabbitMQ官方网站RabbitMQ官方文档噼咔噼咔-动力节点教程 文章目录 一、认识RabbitMQ1.1 消息中间件(MQ Message Queue 消息队列1.2 主流的消息中间件1.3 MQ的应用场景1.3.1 异步处理1.3.2 系统解耦1.3.3 流量削峰1.3.4 日志处理 二、RabbitMQ运行环境搭建…

Windows10不常用操作(录屏、开启超级管理员、关闭自动IP配置、Edge崩溃等)

Win10家庭版开启超级管理员 Win10家庭版开启或禁用超级管理员账户步骤如下: 在搜索框中输入CMD,右键以管理员方式运行。 开启 net user administrator /active:yes禁用 net user administrator /active:no Win10关闭自动IP配置 win10设置完静态ip&am…

微服务架构 | 超时管理

INDEX LSA 级别与全年停机时间速查表LSA 级别实战TP 性能超时时间设计原则 LSA 级别与全年停机时间速查表 计算公式:60 * 60 * 24 * 365 * (1-LSA) 31,536,000‬ * (1-LSA) 系统级别LSA级别全年停机时间099.999%5分钟099.99%52分钟199.9%8.8小时299%3.65 天 LSA…

QT学习day1

一、思维导图 二、作业&#xff1a;实现登录界面 #include "widget.h" #include<QDebug> #include<QIcon>Widget::Widget(QWidget *parent): QWidget(parent) {/**********************窗口******************///设置窗口图标this->setWindowTitle…

C++多线程编程(第四章 案例1,C++11和C++17 多核并行计算样例)

目录 4.1手动实现多核base16编码4.1.1 实现base16编码4.1.2无多线程代码4.1.3 C 11多线程代码4.1.4 C 17多线程并发4.1.5 所有测试代码汇总 4.1手动实现多核base16编码 4.1.1 实现base16编码 二进制转换为字符串 一个字节8位&#xff0c;拆分为两个4位字节&#xff08;最大值…

产品经理必备的14款需求管理工具推荐!

产品管理需求在产品经理的日常工作中扮演着至关重要的角色&#xff0c;这一关键任务为产品开发工作和资源投入提供了坚实的基础&#xff0c;它是创造杰出产品的必不可少前提。 面对各式各样的需求&#xff0c;产品经理可以使用专业的需求管理工具来进行集中收集和管理&#xf…

VulnHub Alice

一、信息收集 发现开发了22、80 2.访问ip&#xff0c;右击查看源代码 发现需要利用X-Forwarded-For 火狐插件&#xff1a;X-Forwarded-For Header 挂上代理后&#xff1a; 出现以下页面&#xff1a; 先注册一个账户&#xff0c;然后再登录 发现有参数进行传参 发现传参&a…

网站如何有效防止网络攻击

互联网上的网站和应用程序受到各种威胁&#xff0c;如黑客、恶意软件和数据泄漏。因此&#xff0c;了解如何解决网站被攻击的问题至关重要。本文将介绍一些简单的步骤&#xff0c;帮助您提高您的网站的安全性。 确认攻击 要解决网站被攻击的问题&#xff0c;首先需要识别是否遭…

MES管理系统的设计与实施

随着制造业的快速发展&#xff0c;MES生产管理系统逐渐成为企业提高生产效率和管理水平的重要工具。然而&#xff0c;在实施MES管理系统的过程中&#xff0c;如何确保其有效性和可持续性成为了一个亟待解决的问题。本文将从以终为始、自我完善与适应变化三个方面探讨MES管理系统…

数据结构与算法课后题-第五章(树、森林)

1、 2、 3、 4、 5、 6、 7、 8、 9、

Studio One6.5最新版本新增了对Linux的支持

音乐制作人们&#xff0c;这是你们翘首以待的消息。数字音频工作站&#xff08;DAW&#xff09;已经成为音乐制作专业人士重要工具之一。 遗憾的是&#xff0c;对于 Linux 用户而言&#xff0c;选择十分有限。最受欢迎的选择通常是开源 DAW&#xff0c;如 Ardour、Audacity和闭…

SSM - Springboot - MyBatis-Plus 全栈体系(二十九)

第六章 SpringBoot 五、SpringBoot3 整合 MyBatis 1. MyBatis 整合步骤 导入依赖&#xff1a;在您的 Spring Boot 项目的构建文件&#xff08;如 pom.xml&#xff09;中添加 MyBatis 和数据库驱动的相关依赖。例如&#xff0c;如果使用 MySQL 数据库&#xff0c;您需要添加 …

Pulsar Manager配置自定义认证插件访问

Pulsar Manager配置自定义认证插件访问 Pulsar Manager和dashboard部署和启用认证 pulsar自定义认证插件开发 前面博客讲了以token方式访问pulsar 这节博客讲如何配置自定义认证插件的方式访问pulsar #启动pulsar-manager docker run --name pulsar-manager -dit \-p 9527:…

C# Winform编程(3)对话框

C# Winform编程&#xff08;3&#xff09;对话框 Show(string text);Show(string text, string caption);Show(string text, string caption, MessageBoxButtons buttons);Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon); using System;…

UE5发布Android屏幕适配实践(Blueprint)

之前发了一个文章UE5屏幕适配&#xff0c;后续做项目中又遇到问题&#xff0c;对DPI Scale又有了理解&#xff0c;所以又写了这篇文章。https://mp.csdn.net/mp_blog/creation/editor/133337134https://mp.csdn.net/mp_blog/creation/editor/133337134 DPI Scale Rule使用Short…

Linux:将mysql数据导入mongodb

mysql和mongodb都要同时开启 进入mysql创建一个数据库为aaa create database aaa; 创建一个tarro表结构为 &#xff08;id int,name varchar(20)&#xff09; create table tarro(id int,name varchar(20)); 插入几个数据&#xff0c;等会把这里的数据导过去 insert in…

Java多线程解密:揭秘多线程的奥秘,给你全面了解与实践的权威指南

一&#xff1a;进程与线程 概述&#xff1a;几乎任何的操作系统都支持运行多个任务&#xff0c;通常一个任务就是一个程序&#xff0c;而一个程序就是一个进程。当一个进程运行时&#xff0c;内部可能包括多个顺序执行流&#xff0c;每个顺序执行流就是一个线程。 进程&#…