您当前的位置:首页 > 计算机 > 编程开发 > Python

Python psutil模块:跟踪系统资源和进程管理

时间:08-08来源:作者:点击数:

在Python编程中,系统资源监控和进程管理是非常重要的任务。psutil(Python System and Process Utilities)模块是一个强大的Python库,用于跟踪和管理系统资源,以及执行各种系统和进程相关的操作。本文将深入探讨Python的psutil模块,包括什么是psutil,如何使用它来监控系统资源和管理进程,示例代码以及一些最佳实践。

什么是psutil

psutil是一个跨平台的Python库,用于获取和管理系统资源以及进行进程管理。它提供了一种简单而一致的方式来执行系统级任务,无论是在Windows、Linux还是macOS等操作系统上。

psutil模块可以轻松执行以下任务:

  • 获取系统的CPU信息、内存信息、磁盘信息和网络信息。
  • 获取当前运行的进程列表,以及每个进程的详细信息。
  • 启动、终止和监控进程。
  • 实时监控系统资源使用情况。

安装psutil

在开始使用psutil之前,需要确保已经安装了这个库。可以使用pip来安装psutil,如下所示:

pip install psutil

安装完成后,就可以在Python中导入并使用psutil模块了。

psutil模块的基本用法

要使用psutil模块,首先需要导入它:

import psutil

psutil模块提供了一系列函数和类,用于获取系统信息、管理进程和监控资源使用情况。

获取系统信息

1 CPU信息

psutil可以获取有关CPU的信息,包括CPU核数、CPU使用率和CPU负载。

以下是一些示例代码:

import psutil

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

# 获取CPU使用率
cpu_percent = psutil.cpu_percent(interval=1, percpu=True)
print(f"每个CPU的使用率: {cpu_percent}")

# 获取CPU负载
load_avg = psutil.getloadavg()
print(f"CPU负载: {load_avg}")

2 内存信息

psutil还可以获取有关系统内存的信息,包括总内存、可用内存和内存使用率。

以下是示例代码:

import psutil

# 获取总内存
total_memory = psutil.virtual_memory().total
print(f"总内存: {total_memory} bytes")

# 获取可用内存
available_memory = psutil.virtual_memory().available
print(f"可用内存: {available_memory} bytes")

# 获取内存使用率
memory_percent = psutil.virtual_memory().percent
print(f"内存使用率: {memory_percent}%")

3 磁盘信息

psutil还提供了获取磁盘信息的功能,包括磁盘分区、磁盘使用率和磁盘空间。

以下是一些示例代码:

import psutil

# 获取磁盘分区
disk_partitions = psutil.disk_partitions()
print("磁盘分区:")
for partition in disk_partitions:
    print(f"设备: {partition.device}, 挂载点: {partition.mountpoint}")

# 获取磁盘使用率
disk_usage = psutil.disk_usage('/')
print(f"根目录磁盘使用率: {disk_usage.percent}%")

# 获取磁盘空间
disk_space = psutil.disk_usage('/')
print(f"根目录磁盘空间: 总共 {disk_space.total} bytes, 可用 {disk_space.free} bytes")

4 网络信息

psutil还可以获取有关网络接口的信息,包括网络连接、网络流量等。

以下是示例代码:

import psutil

# 获取网络连接
network_connections = psutil.net_connections(kind='inet')
print("网络连接:")
for conn in network_connections:
    print(f"本地地址: {conn.laddr}, 远程地址: {conn.raddr}, 状态: {conn.status}")

# 获取网络流量
network_io = psutil.net_io_counters()
print(f"网络接收字节数: {network_io.bytes_recv} bytes")
print(f"网络发送字节数: {network_io.bytes_sent} bytes")

进程管理

psutil模块轻松管理进程,包括获取进程列表、获取进程详细信息、启动和终止进程,以及监控进程资源使用情况。

1 获取进程列表

要获取当前运行的所有进程的列表,可以使用psutil.process_iter()函数。

以下是一个示例:

import psutil

# 获取当前运行的所有进程列表
process_list = list(psutil.process_iter())

# 打印前5个进程的信息
for process in process_list[:5]:
    print(f"进程名称: {process.name()}, 进程ID: {process.pid}")

2 获取进程详细信息

psutil还可以获取有关特定进程的详细信息,例如进程名称、进程ID、父进程ID、命令行参数等。

以下是示例代码:

import psutil

# 获取指定进程的详细信息(以当前Python进程为例)
current_process = psutil.Process()
print(f"进程名称: {current_process.name()}")
print(f"进程ID: {current_process.pid}")
print(f"父进程ID: {current_process.ppid()}")
print(f"命令行参数: {current_process.cmdline()}")

3 启动和终止进程

psutil可以启动和终止进程。要启动新进程,可以使用psutil.Popen()函数。要终止已存在的进程,可以使用psutil.Process.terminate()psutil.Process.kill()方法。

以下是示例代码:

import psutil
import subprocess
import time

# 启动新进程
new_process = psutil.Popen(["notepad.exe"])

# 等待一段时间
time.sleep(5)

# 终止新进程
new_process.terminate()
time.sleep(2)
if new_process.is_running():
    new_process.kill()

# 使用subprocess启动新进程(示例)
subprocess.Popen(["notepad.exe"])

# 注意:subprocess.Popen()和psutil.Popen()的用法略有不同

4 监控进程资源使用

psutil还可以用来监控特定进程的资源使用情况,包括CPU使用率、内存使用情况、IO操作等。

以下是示例代码:

import psutil
import time

# 获取当前Python进程
current_process = psutil.Process()

# 每隔1秒获取一次CPU使用率和内存使用情况
for _ in range(5):
    cpu_percent = current_process.cpu_percent()
    memory_info = current_process.memory_info()
    print(f"CPU使用率: {cpu_percent}%")
    print(f"内存使用情况: {memory_info}")
    time.sleep(1)

系统监控示例

psutil可以用来实时监控系统资源使用情况。以下是两个示例,分别是实时监控CPU利用率和内存利用率的示例:

1 实时监控CPU利用率

import psutil
import time

# 实时监控CPU利用率
for _ in range(5):
    cpu_percent = psutil.cpu_percent(interval=1)
    print(f"CPU利用率: {cpu_percent}%")
    time.sleep(1)

2 实时监控内存利用率

import psutil
import time

# 实时监控内存利用率
for _ in range(5):
    memory_percent = psutil.virtual_memory().percent
    print(f"内存利用率: {memory_percent}%")
    time.sleep(1)

注意事项和最佳实践

  • 要小心处理系统资源,特别是在监控和管理进程时,确保不会意外终止重要的进程。
  • 在使用psutil模块时,需要有足够的权限来执行系统级任务,否则可能会出现权限错误。
  • 尽量避免频繁地轮询系统资源,以减轻系统负担。
  • 在监控系统资源时,考虑使用多线程或多进程来实现并发性能更好的监控。

总结

psutil模块是Python中用于跟踪系统资源和管理进程的强大工具。它提供了简单而一致的接口,允许获取系统信息、管理进程和监控资源使用情况。

本文中,深入探讨了psutil模块的基本用法,包括获取系统信息(CPU、内存、磁盘、网络)、进程管理(获取进程列表、获取进程详细信息、启动和终止进程)、系统监控示例等。还讨论了一些注意事项和最佳实践,以确保安全和有效地使用psutil模块。

希望本文能帮助大家更好地理解和应用psutil模块,以解决系统资源监控和进程管理的需求。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐