Python psutil模块全面指南:系统监控与进程管理实战
本文详细介绍Python中psutil跨平台系统监控库的安装与核心用法。涵盖获取用户信息、CPU、内存、磁盘、网络IO及系统进程管理等关键API,提供完整代码示例,帮助开发者实现系统资源监控与进程控制。
psutil模块简介与平台支持
psutil(Process and System Utilities)是一个跨平台的Python库,用于获取运行中进程和系统利用率(包括CPU、内存、磁盘、网络及传感器)的相关信息。它主要应用于系统监视、分析以及限制进程资源,同时支持对正在运行的进程进行管理。该库实现了类似经典UNIX命令行工具的功能,如ps、top、iotop、lsof、netstat、ifconfig和free等提供的能力。
psutil支持多种操作系统平台,包括Linux、Windows、macOS、FreeBSD、OpenBSD、NetBSD、Sun Solaris以及AIX等。
psutil模块安装
安装psutil模块非常简单,只需在终端执行以下命令即可:
pip install psutil
系统基本信息获取
获取用户系统基本信息,包括当前登录用户和系统启动时间。
import psutil
import datetime
print("当前用户:", psutil.users())
print("当前系统时间:", psutil.boot_time()) # 以时间戳格式返回)
print(datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H: %M: %S")) # 转换成自然时间格式
系统内存监控
获取系统内存使用情况,包括总内存、已用内存、空闲内存及使用百分比。
mem = psutil.virtual_memory()
print("系统内存全部信息:", mem)
mem_total = float(mem.total)
mem_used = float(mem.used)
mem_free = float(mem.free)
mem_percent = float(mem.percent)
print(f"系统总计内存:{mem_total}")
print(f"系统已经使用内存:{mem_used}")
print(f"系统空闲内存:{mem_free}")
print(f"系统内存使用率:{mem_percent}")
CPU与交换内存监控
获取CPU相关信息,包括CPU时间统计、逻辑核心数量以及交换内存(swap)状态。
print("CPU汇总信息:", psutil.cpu_times())
print("cpu逻辑个数:", psutil.cpu_count())
print("swap内存信息:", psutil.swap_memory())
磁盘分区与IO监控
获取磁盘相关信息,包括磁盘分区列表、指定分区的空间使用情况以及磁盘读写IO计数器。
print("获取磁盘的完整信息:", psutil.disk_partitions())
print("获取分区表的参数:", psutil.disk_usage('/')) # 获取/分区的状态
print("获取硬盘IO总个数:", psutil.disk_io_counters())
print("获取单个分区IO个数:", psutil.disk_io_counters(perdisk=True)) # perdisk=True参数获取单个分区IO个数
网络IO统计
获取网络IO统计信息,包括总的网络字节收发量。
print("获取网络总IO信息:", psutil.net_io_counters())
系统进程列表管理
获取系统进程管理信息,列出所有正在运行的进程ID。
print("查看系统全部进程:", psutil.pids())
单个进程详细信息查询
获取单个特定进程的详细信息,包括进程名、可执行文件路径、状态、创建时间、CPU时间、内存利用率、内存详情(RSS/VMS)、IO统计、线程数等。
pid_info = psutil.Process(1200)
print(pid_info.name()) # 进程名
print(pid_info.exe()) # 进程的bin路径
print(pid_info.status()) # 进程状态
print(pid_info.create_time()) # 进程创建时间
print(pid_info.cpu_times()) # 进程的cpu时间信息,包括user,system两个cpu信息
print(pid_info.memory_percent()) # 进程内存利用率
print(pid_info.memory_info()) # 进程内存rss,vms信息
print(pid_info.io_counters()) # 进程的IO信息,包括读写IO数字及参数
print(pid_info.num_threads()) # 进程开启的线程数
完整代码示例与运行结果
以下是整合上述各项功能的完整Python源码示例:
import psutil
import datetime
# 用户,系统相关:
print("当前用户:", psutil.users())
print("当前系统时间:", psutil.boot_time()) # 以linux时间格式返回)
print(datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H: %M: %S")) # 转换成自然时间格式
# 内存相关:
mem = psutil.virtual_memory()
print("系统内存全部信息:", mem)
mem_total = float(mem.total)
mem_used = float(mem.used)
mem_free = float(mem.free)
mem_percent = float(mem.percent)
print(f"系统总计内存:{mem_total}")
print(f"系统已经使用内存:{mem_used}")
print(f"系统空闲内存:{mem_free}")
print(f"系统内存使用率:{mem_percent}")
# CPU相关:
print("CPU汇总信息:", psutil.cpu_times())
print("cpu逻辑个数:", psutil.cpu_count())
print("swap内存信息:", psutil.swap_memory())
# 磁盘相关:
print("获取磁盘的完整信息:", psutil.disk_partitions())
print("获取分区表的参数:", psutil.disk_usage('/')) # 获取/分区的状态
print("获取硬盘IO总个数:", psutil.disk_io_counters())
print("获取单个分区IO个数:", psutil.disk_io_counters(perdisk=True)) # perdisk=True参数获取单个分区IO个数
# 网络相关:
print("获取网络总IO信息:", psutil.net_io_counters())
# 系统进程管理:
print("查看系统全部进程:", psutil.pids())
# 单个进程的详细信息:
pid_info = psutil.Process(1200)
print(pid_info.name()) # 进程名
print(pid_info.exe()) # 进程的bin路径
print(pid_info.status()) # 进程状态
print(pid_info.create_time()) # 进程创建时间
print(pid_info.cpu_times()) # 进程的cpu时间信息,包括user,system两个cpu信息
print(pid_info.memory_percent()) # 进程内存利用率
print(pid_info.memory_info()) # 进程内存rss,vms信息
print(pid_info.io_counters()) # 进程的IO信息,包括读写IO数字及参数
print(pid_info.num_threads()) # 进程开启的线程数
运行上述代码后,将输出当前系统的各项监控数据,具体结果取决于运行环境。

至此,关于Python中psutil模块的使用介绍完毕。如需了解更多相关技术内容,建议查阅本站过往文章或继续浏览后续更新。感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









