psutil库的使用说明

news2024/10/1 16:04:21

前言

        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.coloradmin.cn/o/2182673.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv11改进 | Neck篇 | YOLOv11引入BiFPN双向特征金字塔网络

1.BiFPN介绍 摘要:模型效率在计算机视觉中变得越来越重要。 在本文中,我们系统地研究了用于目标检测的神经网络架构设计选择,并提出了几个提高效率的关键优化。 首先,我们提出了一种加权双向特征金字塔网络(BiFPN&…

【Linux服务器】git和github交互使用

前言:有时候pycharm连接不上github,还是得命令行操作 目录 1. 准备git2. 配置github账户3. 上传项目3.1 创建本地仓库3.2 提交本地代码3.3 上传到github 4. 注意 1. 准备git 下载链接:官网 下载后直接运行安装,cmd输入git --vers…

基于Springboot+Vue的农场投入品运营线上管理系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 在这个…

Kali Linux语言设置成中文

要将Kali Linux设置成中国地区(简体中文),可以按照以下步骤进行操作: 一、更新软件包列表 打开Kali Linux的终端。输入以下命令来更新软件包列表: sudo apt-get update二、安装语言包 输入以下命令来安装locales包…

社区医疗健康管理:SpringBoot技术应用

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理社区医院信息平台的相关信息成为必然。开发…

如何实现多套环境的自动化测试?

实战练习 分别准备两套测试环境&#xff0c;都对其发起 get 请求&#xff0c;传入参数 name&#xff0c;对应值为 hogwarts&#xff0c;并断言其响应值。 测试环境1&#xff1a;http://httpbin.org/get 测试环境2&#xff1a;https://httpbin.ceshiren.com/get <strong&g…

YOLOv11改进 | Neck篇 | YOLOv11引入Slim-Neck(轻量)

1. Slim-Neck介绍 摘要&#xff1a;目标检测是计算机视觉中重要的下游任务。 对于车载边缘计算平台来说&#xff0c;巨大的模型很难达到实时检测的要求。 而且&#xff0c;由大量深度可分离卷积层构建的轻量级模型无法达到足够的精度。 我们引入了一种新的轻量级卷积技术 GSCon…

Go语言入门:掌握基础语法与核心概念

Go&#xff08;又称 Golang&#xff09;是一种开源的编程语言&#xff0c;由 Google 的 Robert Griesemer、Rob Pike 和 Ken Thompson 在 2007 年设计。Go 语言在设计时考虑了现代多核处理器的并发计算&#xff0c;其语法简洁、易于理解&#xff0c;同时提供了高效的编译和执行…

Android Studio | 无法识别Icons.Default.Spa中的Spa

编写底部导航栏&#xff0c;涉及到Spa部分出现报红&#xff1a; 解决办法&#xff1a;在build.gradle.kts中引入图标依赖 dependencies {implementation "androidx.compose.material:material-icons-extended:<version>" }

八,MyBatis-Plus 的“多数据源”的连接操作(详细说明)

八&#xff0c;MyBatis-Plus 的“多数据源”的连接操作&#xff08;详细说明&#xff09; 文章目录 八&#xff0c;MyBatis-Plus 的“多数据源”的连接操作&#xff08;详细说明&#xff09;最后&#xff1a; 在学习多数据源之前&#xff0c;我们先来了解一下分库分表 当一个项…

数据清洗第1篇章 - 处理缺失值和重复值

数据清洗是数据分析过程中至关重要的一步&#xff0c;它确保数据的准确性、一致性和完整性。这不仅有助于提高分析结果的可靠性和有效性&#xff0c;还能为算法建模决策提供高质量的数据基础。在进行数据分析和建模的过程中&#xff0c;大量的时间花在数据准备上&#xff1a;加…

[uni-app]小兔鲜-05登录+个人中心

登录 微信授权登录: 通过wx.login()获取code登录凭证, 通过特定类型按钮获取用户手机号, 实现授权登录 import type { LoginResult } from /types/member import { http } from /utils/httptype LoginParams {code: stringencryptedData: stringiv: string }// 微信登录 expo…

每日一题|983. 最低票价|动态规划、记忆化递归

本题求解最小值&#xff0c;思路是动态规划&#xff0c;但是遇到的问题是&#xff1a;动态规划更新的顺序和步长&#xff0c;以及可能存在的递归溢出问题。 1、确定dp数组含义 dp[i]表示第i天到最后一天&#xff08;可能不在需要出行的天数里&#xff09;&#xff0c;需要花费…

图神经网络DGL库之消息传递

图神经网络DGL库之消息传递 1 消息传递1.1 图解1.2 语法格式1.2.1 message函数1.2.2 reduce函数1.2.3 update函数1.2.4 apply_nodes函数1.2.5 apply_edges函数 2 具体例子2.1 建图2.2 消息传递2.2.1 函数构造2.2.2 边更新2.2.3 节点更新2.2.4 消息聚合1 未使用更新函数2 使用更…

M3u8视频由手机拷贝到电脑之后,通过potplayer播放报错找不到文件地址怎么解决?

该文章前面三节主要介绍M3u8视频是什么&#xff0c;视频播放错误(找不到地址)的解决方法在后面 M3U8是一种多媒体播放列表文件格式&#xff0c;主要用于流媒体播放。 一、文件格式特点 1. 文本文件&#xff1a;M3U8是一个采用 UTF-8 编码的文本文件&#xff0c;这意味着它可…

Shell入门基础学习笔记

目录 第1章 Shell概述 第2章 Shell解析器 第3章 Shell脚本入门 第4章 Shell中的变量 4.1 系统变量 4.2 自定义变量 4.3 特殊变量&#xff1a;$n 4.4 特殊变量&#xff1a;$# 4.5 特殊变量&#xff1a;$*、$ 4.6 特殊变量&#xff1a;$&#xff1f; 第5章 运算符 …

玩机进阶教程----MTK芯片机型修改串码IMEI 修改MEID 修复基带步骤详细演示 总结

在前面的博文中有对MTK芯片机型修改参数步骤做过解析。但其中有些步骤友友不太了解。在以前MTK芯片 3G 4G的机型中有使用老版本修改工具SN_Writer_Tool来修改,但对于新版本mtk芯片机型兼容性不是太好。而且局限于必须有基带BP AP文件。今天针对新工具Modem META 修改 做个补充…

国外问卷调查匠哥已经不带人了,但是还可以交流

国外问卷调查匠哥已经不带人了&#xff0c;但是还可以来和匠哥交流&#xff0c; 为啥不带人了呢&#xff1f; 从今年年初开始&#xff0c;匠哥在带学员的过程中发现&#xff1a; 跟往年同样的收费&#xff0c;同样的教学&#xff0c;甚至我付出的时间精力比以前还多&#xff…

Java | Leetcode Java题解之第447题回旋镖的数量

题目&#xff1a; 题解&#xff1a; class Solution {public int numberOfBoomerangs(int[][] points) {int ans 0;for (int[] p : points) {Map<Integer, Integer> cnt new HashMap<Integer, Integer>();for (int[] q : points) {int dis (p[0] - q[0]) * (p[…

如何构建一个生产级的AI平台(1)?

本文概述了生成式 AI 平台的常见组件、它们的作用以及它们的实现方式。 本文重点介绍部署 AI 应用程序的整体架构。 它讨论了需要哪些组件以及构建这些组件时的注意事项。 它不是关于如何构建 AI 应用程序。 这就是整体架构的样子。 这是一个相当复杂的系统。 这篇文章将从最…