python psutil模块系统监控详解

1. psutil模块简介

psutil是一个跨平台的Python库,用于检索有关运行中计算机系统的信息。它提供了一种简单而便捷的方式来获取CPU使用率、内存使用情况、磁盘活动、网络状态等系统监控信息。通过使用psutil模块,我们可以编写应用程序来监控和管理正在运行的系统。

2. 安装psutil模块

在使用psutil模块之前,我们需要先安装它。psutil模块可以通过pip命令进行安装,打开命令行终端,输入以下命令进行安装:

pip install psutil

3. 获取CPU使用率

psutil模块提供了一个函数psutil.cpu_percent(),用于获取当前系统的CPU使用率。使用该函数可以监控系统的CPU负载情况。

下面是一个示例,展示了如何使用psutil来获取并打印CPU使用率:

import psutil

# 获取CPU使用率

cpu_usage = psutil.cpu_percent()

print(f"CPU使用率: {cpu_usage}%")

运行上述代码,即可得到当前系统的CPU使用率。

3.1 获取每个CPU核心的使用率

如果我们需要获取每个CPU核心的使用率,可以使用psutil.cpu_percent(percpu=True)函数,其返回一个列表,每个元素表示一个CPU核心的使用率。

下面是一个示例代码:

import psutil

# 获取每个CPU核心的使用率

cpu_usage = psutil.cpu_percent(percpu=True)

for i, usage in enumerate(cpu_usage):

print(f"CPU核心{i}使用率: {usage}%")

通过遍历列表,我们可以打印出每个CPU核心的使用率。

4. 获取内存使用情况

使用psutil模块的psutil.virtual_memory()函数可以获取当前系统的内存使用情况。该函数返回一个命名元组,包含了总内存、可用内存、已使用内存、内存使用率等信息。

下面是一个示例代码:

import psutil

# 获取内存使用情况

memory_info = psutil.virtual_memory()

total_memory = memory_info.total

available_memory = memory_info.available

used_memory = memory_info.used

memory_usage = memory_info.percent

print(f"总内存: {total_memory} bytes")

print(f"可用内存: {available_memory} bytes")

print(f"已使用内存: {used_memory} bytes")

print(f"内存使用率: {memory_usage}%")

运行上述代码,即可得到当前系统的内存使用情况。

5. 获取磁盘活动

使用psutil模块的psutil.disk_io_counters()函数可以获取当前系统的磁盘I/O活动情况。该函数返回一个命名元组,包含了磁盘读取次数、磁盘写入次数、磁盘读取字节数、磁盘写入字节数等信息。

下面是一个示例代码:

import psutil

# 获取磁盘I/O活动情况

disk_info = psutil.disk_io_counters()

read_count = disk_info.read_count

write_count = disk_info.write_count

read_bytes = disk_info.read_bytes

write_bytes = disk_info.write_bytes

print(f"磁盘读取次数: {read_count}")

print(f"磁盘写入次数: {write_count}")

print(f"磁盘读取字节数: {read_bytes} bytes")

print(f"磁盘写入字节数: {write_bytes} bytes")

运行上述代码,即可得到当前系统的磁盘I/O活动情况。

6. 获取网络状态

使用psutil模块的psutil.net_io_counters()函数可以获取当前系统的网络I/O活动情况。该函数返回一个命名元组,包含了网络接收字节数、网络发送字节数等信息。

下面是一个示例代码:

import psutil

# 获取网络I/O活动情况

net_info = psutil.net_io_counters()

bytes_sent = net_info.bytes_sent

bytes_received = net_info.bytes_recv

print(f"发送字节数: {bytes_sent} bytes")

print(f"接收字节数: {bytes_received} bytes")

运行上述代码,即可得到当前系统的网络I/O活动情况。

7. 结束进程

使用psutil模块的psutil.Process(pid).terminate()函数可以结束指定pid的进程。

下面是一个示例代码:

import psutil

# 结束进程

pid = 12345

psutil.Process(pid).terminate()

print(f"进程{pid}已结束")

运行上述代码,即可结束指定pid的进程。

8. 总结

通过psutil模块,我们可以方便地获取系统监控信息,包括CPU使用率、内存使用情况、磁盘活动、网络状态等。psutil模块提供了简单而强大的函数来获取这些信息,并且跨平台兼容性也很好。

在编写应用程序时,我们可以使用psutil模块来监控系统状态,根据监控结果来进行调优和管理,以提高系统的性能和稳定性。

后端开发标签