前言
psutil
是一个跨平台的库,用于获取系统的进程和系统利用率(包括 CPU、内存、磁盘、网络等)信息。
目录
安装
应用场景
常用方法
一、系统信息相关函数
二、进程信息相关函数
三、网络信息相关函数
四、其他实用函数
使用样例
监控应用程序
安装
pip install psutil
应用场景
一、系统监控
二、进程管理
三、资源限制
四、自动化任务
常用方法
一、系统信息相关函数
psutil.cpu_times()
:
- 返回系统的 CPU 时间信息,包括用户态时间、系统态时间、空闲时间等。
psutil.cpu_percent()
:
- 返回 CPU 的使用率百分比。可以指定间隔时间来获取一段时间内的平均使用率。
psutil.virtual_memory()
:
- 返回系统的虚拟内存信息,包括总内存、可用内存、已使用内存等。
psutil.swap_memory()
:
- 返回系统的交换内存信息。
psutil.disk_usage(path)
:
- 返回指定路径的磁盘使用情况,包括总空间、已使用空间和可用空间等。
代码
import psutilcpu_times = psutil.cpu_times()print(f"用户态时间:{cpu_times.user}")print(f"系统态时间:{cpu_times.system}")print(f"空闲时间:{cpu_times.idle}")cpu_percent = psutil.cpu_percent(interval=1)print(f"CPU 使用率:{cpu_percent}%")memory_info = psutil.virtual_memory()print(f"总内存:{memory_info.total}")print(f"可用内存:{memory_info.available}")print(f"已使用内存:{memory_info.used}")swap_info = psutil.swap_memory()print(f"总交换内存:{swap_info.total}")print(f"已使用交换内存:{swap_info.used}")print(f"可用交换内存:{swap_info.free}")disk_usage = psutil.disk_usage('/')print(f"总磁盘空间:{disk_usage.total}")print(f"已使用磁盘空间:{disk_usage.used}")print(f"可用磁盘空间:{disk_usage.free}")
二、进程信息相关函数
psutil.pids()
:
- 返回当前系统中的所有进程 ID。
psutil.Process(pid)
:
- 创建一个表示特定进程的对象,可以通过进程 ID 来获取。
process.name()
:
- 返回进程的名称。
process.exe()
:
- 返回进程的可执行文件路径。
process.cpu_percent()
:
- 返回进程的 CPU 使用率百分比。
process.memory_info()
:
- 返回进程的内存使用信息,包括 RSS(常驻集大小)和 VMS(虚拟内存大小)等。
process.terminate()
:
- 终止进程。
代码
pids = psutil.pids()print(f"进程 ID 列表:{pids}")process = psutil.Process(1234)process_name = process.name()print(f"进程名称:{process_name}")exe_path = process.exe()print(f"可执行文件路径:{exe_path}")process_cpu_percent = process.cpu_percent(interval=1)print(f"进程 CPU 使用率:{process_cpu_percent}%")memory_info = process.memory_info()print(f"进程 RSS:{memory_info.rss}")print(f"进程 VMS:{memory_info.vms}")process.terminate()
三、网络信息相关函数
psutil.net_io_counters()
:
- 返回系统的网络 I/O 统计信息,包括发送和接收的字节数、数据包数等。
psutil.net_if_addrs()
:
- 返回系统的网络接口地址信息。
psutil.net_if_stats()
:
- 返回系统的网络接口状态信息。
代码
net_io = psutil.net_io_counters()print(f"发送字节数:{net_io.bytes_sent}")print(f"接收字节数:{net_io.bytes_recv}")net_addrs = psutil.net_if_addrs()print(f"网络接口地址信息:{net_addrs}")net_stats = psutil.net_if_stats()print(f"网络接口状态信息:{net_stats}")
四、其他实用函数
psutil.boot_time()
:
- 返回系统的启动时间(以秒为单位,从 Unix 纪元时间开始计算)。
psutil.users()
:
- 返回当前登录到系统的用户信息。
代码
boot_time = psutil.boot_time()print(f"系统启动时间:{boot_time}")users = psutil.users()print(f"当前登录用户信息:{users}")
使用样例
监控应用程序
import psutil
import time# 要监控的应用程序名称
target_app_name = "YourAppName.exe"while True:for process in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_info']):if process.info['name'] == target_app_name:cpu_percent = process.info['cpu_percent']memory_info = process.info['memory_info']rss_memory = memory_info.rss / (1024 * 1024) # 转换为 MBvms_memory = memory_info.vms / (1024 * 1024) # 转换为 MBprint(f"应用程序 {target_app_name}:CPU 使用率 {cpu_percent}%,物理内存占用 {rss_memory}MB,虚拟内存占用 {vms_memory}MB")time.sleep(5)