当前位置: 首页 > article >正文

psutil库的使用说明

前言

        psutil是一个跨平台的库,用于获取系统的进程和系统利用率(包括 CPU、内存、磁盘、网络等)信息。

目录

安装

应用场景

常用方法

一、系统信息相关函数

 二、进程信息相关函数

三、网络信息相关函数

 四、其他实用函数

使用样例

监控应用程序


安装

pip install psutil

应用场景

一、系统监控

二、进程管理

三、资源限制

四、自动化任务

常用方法

一、系统信息相关函数

psutil.cpu_times()

  • 返回系统的 CPU 时间信息,包括用户态时间、系统态时间、空闲时间等。

psutil.cpu_percent()

  • 返回 CPU 的使用率百分比。可以指定间隔时间来获取一段时间内的平均使用率。

psutil.virtual_memory()

  • 返回系统的虚拟内存信息,包括总内存、可用内存、已使用内存等。

psutil.swap_memory()

  • 返回系统的交换内存信息。

psutil.disk_usage(path)

  • 返回指定路径的磁盘使用情况,包括总空间、已使用空间和可用空间等。

代码

     import psutil

     cpu_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)  # 转换为 MB
            vms_memory = memory_info.vms / (1024 * 1024)  # 转换为 MB
            print(f"应用程序 {target_app_name}:CPU 使用率 {cpu_percent}%,物理内存占用 {rss_memory}MB,虚拟内存占用 {vms_memory}MB")
    time.sleep(5)


http://www.kler.cn/news/327574.html

相关文章:

  • 【线程】线程池
  • 通过ChatGPT 提示词设定60种不同的写作风格
  • LeetCode讲解篇之53. 最大子数组和
  • 【前端安全】js逆向之微信公众号登录密码
  • 使用kaggle命令下载数据集和模型
  • MAGICORE:基于多代理迭代的粗到细精炼框架,提升大语言模型推理质量
  • 普通二叉搜索树的模拟实现【C++】
  • 【Ansys Fluent】计算数据导入tecplot傅里叶分析
  • 数据订阅与消费中间件Canal 服务搭建(docker)
  • 设计模式-策略模式-200
  • python全栈学习记录(二十)类的属性传递与绑定方法
  • Leetcode 3303. Find the Occurrence of First Almost Equal Substring
  • 【分布式微服务云原生】 RPC协议:超越HTTP的远程通信艺术
  • 基于Springboot+Vue的c语言学习辅导网站的设计与实现 (含源码数据库)
  • 中间件:SpringBoot集成Redis
  • 【Python|接口自动化测试】使用requests库发送HTTP请求
  • Django连接Azure服务器里的gpt-4o并实现聊天功能
  • PHP程序如何实现限制一台电脑登录?
  • maven parent: 指定了项目的父 POM packaging: 指定打包类型为 POM。 modules: 列出了该项目包含的子模块,
  • 【开源免费】基于SpringBoot+Vue.JS校园资料分享平台(JAVA毕业设计)
  • opus基础简介(github)
  • 使用rsync+jenkins实现服务自动部署全流程
  • React 生命周期 - useEffect 介绍
  • WebGIS包括哪些技术栈?怎么学习?
  • 足球青训俱乐部后台:Spring Boot开发策略
  • 滚雪球学MySQL[11.1讲]:总结与展望
  • Spring Boot 点餐系统:简化您的订餐流程
  • 一个服务器可以搭建几个网站
  • vue结合element-ui实现列表拖拽变化位置,点击拖动图标拖动整个列表元素,使用tsx格式编写
  • SpringBootTest Mockito 虚实结合编写测试