Python3.6 环境下 psutil 模块安装与系统监控实战
本文详解 Python3.6 环境下 psutil 模块的安装方法及核心功能。psutil 是跨平台系统监控库,可获取 CPU、内存、磁盘及网络利用率。文章提供 Windows 下安装 .whl 文件的步骤,并展示通过 psutil 获取 CPU 时间、物理/逻辑核心数、内存使用量、磁盘 IO 及网络统计信息的完整代码示例,适用于系统资源分析与进程管理。
psutil 模块简介与安装
psutil 是一个跨平台的 Python 库,用于在 Python 中获取进程和系统利用率信息,包括 CPU、内存、磁盘、网络等。它常被用于系统监控、资源分析及进程管理,功能上类似于 Linux 下的 ps、top 和 lsof 等命令行工具。该库支持 32 位和 64 位的 Linux、Windows 及 OS X 等系统。
在 Windows 10 环境下使用 Python 3.6 时,通常需要通过 pip 安装对应的 .whl 文件。以下是具体的安装命令与输出示例:
D:\Program Files\python\Scripts>pip.exe install D:\python\psutil-5.2.2-cp36-cp36m-win_amd64.whl
Processing d:\python\psutil-5.2.2-cp36-cp36m-win_amd64.whl
Installing collected packages: psutil
Successfully installed psutil-5.2.2 CPU 监控功能
通过 psutil 可以获取 CPU 的所有逻辑信息,包括用户、系统、空闲及等待时间等。以下代码展示了如何查看 CPU 时间、逻辑核心数及物理核心数:
import psutil
# 查看 cpu 所有信息
>>> psutil.cpu_times()
scputimes(user=11677.09, nice=57.93, system=148675.58, idle=2167147.79, iowait=260828.48, irq=7876.28, softirq=0.0, steal=3694.59, guest=0.0, guest_nice=0.0)
若需查看每个 CPU 核心的时间比,可设置 percpu=True:
>>> psutil.cpu_times(percpu=True)
[scputimes(user=11684.17, nice=57.93, system=148683.01, idle=2168982.08, iowait=260833.18, irq=7882.35, softirq=0.0, steal=3697.3, guest=0.0, guest_nice=0.0)]获取单个用户时间值及核心数量(逻辑与物理):
>>> psutil.cpu_times().user
11684.4
>>> psutil.cpu_count()
1
>>> psutil.cpu_count(logical=False)
1内存与 Swap 监控
psutil 可获取系统总计内存、已使用内存及空闲内存等详细信息。以下代码展示了如何获取系统内存状态:
>>> import psutil
>>> mem = psutil.virtual_memory()
>>> mem
#系统内存的所有信息
svmem(total=1040662528, available=175054848, percent=83.2, used=965718016, free=74944512, active=566755328, inactive=59457536, buffers=9342976, cached=90767360)分别提取总内存、已用内存和空闲内存:
>>> mem.total
1040662528
>>> mem.used
965718016
>>> mem.free
112779264此外,还可以获取 Swap 内存信息:
>>> psutil.swap_memory()
sswap(total=0, used=0, free=0, percent=0, sin=0, sout=0)磁盘与网络监控
使用 psutil 可以获取磁盘利用率、分区表参数及硬盘 IO 总个数。以下代码展示了如何获取磁盘完整信息及单个分区的 IO 个数:
psutil.disk_io_counters()
psutil.disk_partitions()
psutil.disk_usage('/') #获取/分区的状态
psutil.disk_io_counters()
psutil.disk_io_counters(perdisk=True) #perdisk=True参数获取单个分区IO个数网络信息包括发送/接收字节数、包数等。获取网络总 IO 信息及每个接口的详细信息:
psutil.net_io_counters()
psutil.net_io_counters(pernic=True) #pernic=True系统用户与进程管理
psutil 还可以获取当前系统用户登录信息及系统进程信息。以下代码展示了如何获取系统用户及进程列表:
psutil.users()
psutil.pids()通过 psutil.Process 可以查看单个进程的详细信息,包括进程名、路径、状态、创建时间、CPU 亲和度、内存利用率及 IO 信息等:
p = psutil.Process(2423)
p.name() #进程名
p.exe() #进程的bin路径
p.cwd() #进程的工作目录绝对路径
p.status() #进程状态
p.create_time() #进程创建时间
p.uids() #进程uid信息
p.gids() #进程的gid信息
p.cpu_times() #进程的cpu时间信息,包括user,system两个cpu信息
p.cpu_affinity() #get进程cpu亲和度,如果要设置cpu亲和度,将cpu号作为参考就好
p.memory_percent() #进程内存利用率
p.memory_info() #进程内存rss,vms信息
p.io_counters() #进程的IO信息,包括读写IO数字及参数
p.connectios() #返回进程列表
p.num_threads() #进程开启的线程数此外,通过 psutil 的 Popen 方法可以启动应用程序并跟踪程序的相关信息:
from subprocess import PIPE
p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"],stdout=PIPE)
p.name()
p.username()以上就是 Python3.6 环境下 psutil 模块安装与系统监控的详细内容,更多关于 Python 系统资源监控的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









