系统基础信息模块psutil之系统进程管理方法篇
一、简介
获取当前系统的进程信息,可以让运维人员得知应用程序的运行状态,包括进程的启动时间、查看或设置CPU的亲和度,内存使用率、IO信息、socket连接、线程数等,这些信息可以呈现出指定进程是否存活,资源利用情况,为开发人员的代码优化、问题定位提供很好的数据参考。
(1)进程信息
psutil模块在获取进程信息方面也提供了很好的支持,包括使用psutil.pids()方法获取所有进程的PID,使用psutil.Process()方法获取单个进程的名称、路径、状态、系统资源利用率等信息,具体见下面的操作例子:
解释:
方法 | 作用 |
psutil.pids() | 列出所有进程的PID(进程号) |
p = psutil.Process(pid_number) | 实例化一个Process对象,参数为一进程的PID(进程号) |
p.name() | 进程名 |
p.exe() | 进程的bin路径(有的程序没有) |
p.cwd() | 进程工作目录绝对路径 |
p.status() | 进程状态 |
p.create_time() | 进程创建时间(以时间戳格式显示) |
p.uids() | 进程uid信息(用户id) |
p.gids() | 进程gid信息(组id) |
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.connections() | 返回进程列表(特殊程序除外) |
p.num_threads() | 进程开启的线程数 |
(2)popen类的使用
psutil提供的popen类的作用是获取用户启动的应用程序的进程信息,以便跟踪程序进程的运行状态。具体实现方法如下:
# 导入相关库 import psutil from subprocess import PIPE # 实例化一个对象,使用Popen类调用Python并打印Hello p = psutil.Popen([“/usr/bin/python”, “-c”, “print(‘hello’)”],stdout=PIPE) # 进程名称 p.name() ‘python’ # 用户名称 p.username() ‘root’ # 输出交谈信息 p.communicate() (b’hello\n’, None) 其他用法请参见:https://psutil.readthedocs.io/en/latest/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?