【详解】Python获取系统性能信息
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} 字节")
这些库和方法可以帮助你全面地获取系统的性能信息。根据你的具体需求,可以选择合适的工具和方法。
- 点赞
- 收藏
- 关注作者
评论(0)