【详解】Python获取系统性能信息

举报
皮牙子抓饭 发表于 2025/11/06 21:55:42 2025/11/06
【摘要】 Python获取系统性能信息在开发和维护应用程序的过程中,了解系统的性能状态是至关重要的。这不仅可以帮助我们优化程序的运行效率,还可以及时发现并解决潜在的问题。Python 作为一种强大的编程语言,提供了多种方式来获取系统的性能信息。本文将介绍如何使用 ​​psutil​​ 库来获取包括CPU、内存、磁盘和网络在内的系统性能数据。安装 psutil​​psutil​​(Process and...

Python获取系统性能信息

在开发和维护应用程序的过程中,了解系统的性能状态是至关重要的。这不仅可以帮助我们优化程序的运行效率,还可以及时发现并解决潜在的问题。Python 作为一种强大的编程语言,提供了多种方式来获取系统的性能信息。本文将介绍如何使用 ​​psutil​​ 库来获取包括CPU、内存、磁盘和网络在内的系统性能数据。

安装 psutil

​psutil​​(Process and System Utilities)是一个跨平台库,用于检索有关正在运行的进程和系统利用率(CPU、内存、磁盘、网络等)的信息。首先,我们需要安装这个库:

pip install psutil

获取 CPU 信息

CPU 使用率

获取当前的 CPU 使用率非常简单,可以使用 ​​cpu_percent()​​ 函数:

import psutil

# 获取当前CPU的使用率
print(f"CPU使用率: {psutil.cpu_percent(interval=1)}%")

CPU 核心数

如果你想了解系统的 CPU 核心数,可以使用 ​​cpu_count()​​ 函数:

# 获取CPU核心数
print(f"CPU核心数: {psutil.cpu_count(logical=True)}")

获取 内存 信息

内存使用情况

要获取内存使用情况,可以使用 ​​virtual_memory()​​ 函数,它返回一个命名元组,包含 total、available、percent、used 和 free 等属性:

# 获取内存信息
memory_info = psutil.virtual_memory()
print(f"总内存: {memory_info.total / (1024.0 ** 3):.2f} GB")
print(f"已用内存: {memory_info.used / (1024.0 ** 3):.2f} GB")
print(f"空闲内存: {memory_info.free / (1024.0 ** 3):.2f} GB")
print(f"内存使用率: {memory_info.percent}%")

获取 磁盘 信息

磁盘分区信息

获取磁盘分区信息可以使用 ​​disk_partitions()​​ 函数,它会列出所有可用的磁盘分区及其相关信息:

# 获取磁盘分区信息
for partition in psutil.disk_partitions():
    print(f"设备: {partition.device}, 挂载点: {partition.mountpoint}, 文件系统类型: {partition.fstype}")

磁盘使用情况

对于每个磁盘分区,可以使用 ​​disk_usage()​​ 函数来获取其使用情况:

# 获取磁盘使用情况
for partition in psutil.disk_partitions():
    usage = psutil.disk_usage(partition.mountpoint)
    print(f"挂载点: {partition.mountpoint}, 总大小: {usage.total / (1024.0 ** 3):.2f} GB, 已用: {usage.used / (1024.0 ** 3):.2f} GB, 空闲: {usage.free / (1024.0 ** 3):.2f} GB, 使用率: {usage.percent}%")

获取 网络 信息

网络接口信息

获取网络接口信息可以使用 ​​net_if_addrs()​​ 函数,它返回一个字典,其中键是网络接口名称,值是一个地址列表:

# 获取网络接口信息
for interface, addrs in psutil.net_if_addrs().items():
    for addr in addrs:
        print(f"接口: {interface}, 地址: {addr.address}, 子网掩码: {addr.netmask}, 广播地址: {addr.broadcast}")

网络流量统计

要获取网络流量统计信息,可以使用 ​​net_io_counters()​​ 函数,它返回一个命名元组,包含发送和接收的数据量:

# 获取网络流量统计
net_io = psutil.net_io_counters()
print(f"发送字节数: {net_io.bytes_sent / (1024.0 ** 2):.2f} MB")
print(f"接收字节数: {net_io.bytes_recv / (1024.0 ** 2):.2f} MB")



Python 提供了多种库来帮助开发者轻松地获取这些信息。其中一个非常强大的库是 ​​psutil​​(Process and System Utilities),它是一个跨平台库,用于检索有关正在运行的进程和系统利用率(CPU、内存、磁盘、网络等)的信息。

下面是一些使用 ​​psutil​​ 获取系统性能信息的基本示例:

1. 安装 ​​psutil​

首先,你需要安装 ​​psutil​​ 库。可以通过 pip 安装:

pip install psutil

2. 获取 CPU 使用率

import psutil

# 获取 CPU 使用率
cpu_usage = psutil.cpu_percent(interval=1)
print(f"CPU Usage: {cpu_usage}%")

3. 获取内存使用情况

import psutil

# 获取内存信息
memory_info = psutil.virtual_memory()
print(f"Total Memory: {memory_info.total / (1024 ** 3):.2f} GB")
print(f"Available Memory: {memory_info.available / (1024 ** 3):.2f} GB")
print(f"Used Memory: {memory_info.used / (1024 ** 3):.2f} GB")
print(f"Memory Percentage: {memory_info.percent}%")

4. 获取磁盘使用情况

import psutil

# 获取磁盘信息
disk_info = psutil.disk_usage('/')
print(f"Total Disk Space: {disk_info.total / (1024 ** 3):.2f} GB")
print(f"Used Disk Space: {disk_info.used / (1024 ** 3):.2f} GB")
print(f"Free Disk Space: {disk_info.free / (1024 ** 3):.2f} GB")
print(f"Disk Usage Percentage: {disk_info.percent}%")

5. 获取网络接口信息

import psutil

# 获取网络接口信息
net_io = psutil.net_io_counters()
print(f"Bytes Sent: {net_io.bytes_sent}")
print(f"Bytes Received: {net_io.bytes_recv}")

6. 获取系统启动时间

import psutil
import datetime

# 获取系统启动时间
boot_time = datetime.datetime.fromtimestamp(psutil.boot_time())
print(f"System Boot Time: {boot_time}")

7. 获取当前系统所有进程信息

import psutil

# 获取所有进程信息
for proc in psutil.process_iter(['pid', 'name', 'username']):
    print(proc.info)

以上示例展示了如何使用 ​​psutil​​ 库来获取系统的各种性能信息。这在开发监控工具或需要实时了解系统状态的应用中非常实用。通过这些基础示例,你可以根据自己的需求进一步扩展功能,例如将这些数据发送到远程服务器进行集中管理,或者设置阈值警报等。在Python中,可以使用多种库来获取系统的性能信息,如CPU使用率、内存使用情况、磁盘I/O等。以下是一些常用的库及其用法:

1. ​​psutil​​ 库

​psutil​​ 是一个跨平台的库,用于检索有关正在运行的进程和系统利用率(CPU、内存、磁盘、网络等)的信息。

安装
pip install psutil
示例代码
获取CPU信息
import psutil

# 获取CPU逻辑核心数
cpu_count = psutil.cpu_count(logical=True)
print(f"CPU逻辑核心数: {cpu_count}")

# 获取CPU物理核心数
cpu_count_physical = psutil.cpu_count(logical=False)
print(f"CPU物理核心数: {cpu_count_physical}")

# 获取CPU使用率
cpu_percent = psutil.cpu_percent(interval=1)
print(f"CPU使用率: {cpu_percent}%")
获取内存信息
# 获取内存信息
memory_info = psutil.virtual_memory()
print(f"总内存: {memory_info.total / (1024 ** 3):.2f} GB")
print(f"已用内存: {memory_info.used / (1024 ** 3):.2f} GB")
print(f"空闲内存: {memory_info.free / (1024 ** 3):.2f} GB")
print(f"内存使用率: {memory_info.percent}%")
获取磁盘信息
# 获取磁盘分区信息
disk_partitions = psutil.disk_partitions()
for partition in disk_partitions:
    print(f"设备: {partition.device}")
    print(f"挂载点: {partition.mountpoint}")
    print(f"文件系统类型: {partition.fstype}")
    usage = psutil.disk_usage(partition.mountpoint)
    print(f"总空间: {usage.total / (1024 ** 3):.2f} GB")
    print(f"已用空间: {usage.used / (1024 ** 3):.2f} GB")
    print(f"空闲空间: {usage.free / (1024 ** 3):.2f} GB")
    print(f"使用率: {usage.percent}%")
    print()
获取网络信息
# 获取网络接口信息
net_io_counters = psutil.net_io_counters(pernic=True)
for interface, stats in net_io_counters.items():
    print(f"接口: {interface}")
    print(f"发送字节数: {stats.bytes_sent}")
    print(f"接收字节数: {stats.bytes_recv}")
    print(f"发送包数: {stats.packets_sent}")
    print(f"接收包数: {stats.packets_recv}")
    print()

2. ​​os​​ 和 ​​subprocess​​ 库

虽然 ​​psutil​​ 提供了更高级的功能,但有时你可能需要直接调用系统命令来获取某些信息。这时可以使用 ​​os​​ 和 ​​subprocess​​ 库。

示例代码
获取系统负载
import os

# 获取系统负载
load_avg = os.getloadavg()
print(f"系统负载: {load_avg}")
执行系统命令
import subprocess

# 获取系统信息
result = subprocess.run(['uname', '-a'], capture_output=True, text=True)
print(f"系统信息: {result.stdout}")

3. ​​resource​​ 库

​resource​​ 库可以用来获取当前进程的资源使用情况,如CPU时间和内存使用量。

示例代码
import resource

# 获取当前进程的资源使用情况
usage = resource.getrusage(resource.RUSAGE_SELF)
print(f"用户CPU时间: {usage.ru_utime:.2f} 秒")
print(f"系统CPU时间: {usage.ru_stime:.2f} 秒")
print(f"最大驻留集大小: {usage.ru_maxrss * 1024} 字节")

这些库和方法可以帮助你全面地获取系统的性能信息。根据你的具体需求,可以选择合适的工具和方法。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。