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



    前言

    在开发过程中,了解系统的硬件信息和使用情况对于优化性能和解决问题至关重要。Python提供了一些功能强大的第三方包,可以轻松地获取硬件信息和使用情况。本文将介绍两个常用的包:psutil和platform。


    一、psutil包

    1.1 安装psutil包

    我们可以使用

    pip install psutil -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    • 1

    如果你不想使用镜像可以这样安装:

    pip install psutil 
    
    • 1

    如果你是ubuntu高版本用户,则只能使用:

    pip3 install psutil -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    • 1

    这个命令进行安装

    1.2 psutil 使用方式

    获取CPU使用率

    psutil.cpu_percent(interval=1)
    
    • 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()
    
    • 1

    在这里插入图片描述

    直接调用函数即可!

    将内存的获取的使用情况变成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单位,并打印出结果。你可以根据需要对这些值进行进一步处理或显示。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在这里插入图片描述

    获取磁盘使用情况

    disk_info = psutil.disk_usage('/')
    
    • 1

    在这里插入图片描述

    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")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    这段代码将磁盘使用情况信息从字节单位转换为GB单位,并打印出结果。你可以根据需要对这些值进行进一步处理或显示。

    获取网络信息

    network_info = psutil.net_io_counters()
    
    • 1

    在这里插入图片描述

    网络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")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在这里插入图片描述

    这些信息有助于监测系统的网络活动,包括已发送和已接收的数据量以及网络错误和数据包丢弃情况。这对于网络性能分析和故障排除非常有用。

    二、platform

    2.1 platform的介绍

    platform 是Python内置的库,提供了获取系统一般信息的方法,如操作系统、硬件架构等。
    该库易于使用,可以快速获取与操作系统和硬件相关的关键信息。

    2.2 platform 使用方式

    获取操作系统的名称

    platform.system()
    
    • 1

    在这里插入图片描述

    获取架构的名称

    platform.architecture()
    
    • 1

    在这里插入图片描述


    总结

    通过使用第三方包psutil和platform,我们可以轻松地获取硬件信息和使用情况。psutil提供了丰富的接口,可以监控CPU、内存、磁盘和网络的使用情况。而platform库则提供了一种简单的方法来获取系统的一般信息,如操作系统和硬件架构。这些工具对于开发人员在性能优化、资源管理和故障排查等方面非常有用。

    无论是开发桌面应用程序、服务器端应用还是系统工具,了解硬件信息和使用情况都是至关重要的。这些Python第三方包的使用方便且功能强大,可以帮助开发人员更好地了解系统的运行状况,从而优化应用程序的性能。

    尽管本文介绍了psutil和platform这两个常用的包,但Python生态系统中还有其他相关的第三方包可供选择。根据具体的需求和使用场景,你可以进一步探索和尝试适合你项目的其他包。

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

  • 相关阅读:
    (☞゚ヮ゚)☞【精品C语言整理】☜(゚ヮ゚☜)女盆友缠着你让你教她写代码怎么办?安排,三万字博文带你走遍C语言,从此不再害怕编程
    A Survey on Bias and Fairness in Machine Learning 阅读笔记
    数据结构——二叉搜索树
    Windows平台下C++五子棋项目实战开发
    自然语言处理概念笔记
    CSS花边001:无衬线字体和有衬线字体
    Python:Jupyter:OSError: Initializing from file failed
    .NET 与Java 常见技术名词与抽象概念对照
    银行数据中心绿色发展新格局:建设全闪数据中心
    众和策略:小盘和大盘的关系?
  • 原文地址:https://blog.csdn.net/m0_62599305/article/details/133864073