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

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 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)

相关文章:

psutil库的使用说明

前言 psutil是一个跨平台的库,用于获取系统的进程和系统利用率(包括 CPU、内存、磁盘、网络等)信息。 目录 安装 应用场景 常用方法 一、系统信息相关函数 二、进程信息相关函数 三、网络信息相关函数 四、其他实用函数 使用样例 监控应…...

PMP--三模--解题--71-80

文章目录 7.成本管理--S曲线--S曲线对累计值进行监督和报告--S曲线可以同时报告成本与进度情况。适用于预测和敏捷项目。14.敏捷--信息发射源--是一种可见的实物展示其向组织内其他成员提供信息在不干扰团队的情况下即时实现知识共享。71、 [单选] 项目经理正在为刚刚进入第三次…...

iTextPDF 一个功能强大的 Java PDF 库

iTextPDF 是一个功能强大的 Java PDF 库,它提供了丰富的 API 用于创建和操作 PDF 文档。以下是一些 iTextPDF 的常用功能: 创建 PDF 文档:可以创建新的 PDF 文档,并设置页面大小、边距、背景颜色等 。 添加文本:在 PD…...

QT C++ 自学积累 『非技术文』

QT C 自学积累 『非技术文』 最近一段时间参与了一个 QT 项目的开发,使用的是 C 语法,很遗憾的是我之前从来没有接触过 C ,大学没有开过这堂课,也没用自己学习过,所有说上手贼慢,到现在为止其实也不是很清楚…...

浅谈虚拟内存(操作系统、Redis)

浅谈虚拟内存(操作系统、Redis) 参考&鸣谢 4.1 为什么要有虚拟内存? xiaolincoding 【简单说下】REDIS的虚拟内存机制,会吗?别翻书 aristo_boyunv Redis 虚拟内存 Java杨永杰 浅谈虚拟内存:操作系统与 Redis 在计算机系统中…...

【LeetCode HOT 100】详细题解之链表篇

LeetCode HOT 100题解之链表篇 160 相交链表题目分析代码 206 反转链表方法一:迭代 234 回文链表方法一:将值复制到数组中方法二:快慢指针 141 环形链表方法一:哈希表方法二:快慢指针 142 环形链表II方法一&#xff1a…...

二叉树的递归遍历

方法论 确定递归函数的参数和返回值 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。 确定终止条件 写完了递归算法, 运行的时候,经常会遇到栈溢…...

国内访问OpenAI API

最近在学习LLM。绕不过去的肯定要学习OpenAI。 国内想直接使用官方API十分麻烦。就到处查资料及网友的分享。发现了这个代理可以在国内很方便的使用OpenAI API。 代理的地址如下: https://referer.shadowai.xyz/r/1014150 经过一段实际体验下来,这个…...

深入 Spring RestTemplate 源码:掌握 HTTP 通信核心技术

在上一篇文章《Spring Boot 项目高效 HTTP 通信:常用客户端大比拼!》里,我们提到了RestTemplate,它是Spring框架提供的Http客户端,在springboot项目开发过程中,属于使用最为广泛的 HTTP 客户端之一了。今天…...

计算机网络:计算机网络概述 —— 初识计算机网络

文章目录 计算机网络组成部分网络架构协议与标准网络设备网络类型作用实际应用案例 计算机网络 计算机网络是指将多台计算机通过通信设备和通信链路连接起来,以实现数据和信息的交换和共享的技术和系统。它是现代信息社会的基础设施之一,也是互联网的基…...

set和map结构的使用

个人主页:敲上瘾-CSDN博客 个人专栏:游戏、数据结构、c语言基础、c学习、算法 目录 一、序列式容器和关联式容器 二、set和multiset 1.insert 2.erase 3.find 4.count 三、map和mapmulti 1.pair 2.insert 3.find 4.operator[ ] 5.erase 6.lo…...

2. qt_c++反射实例

目录 使用场景元对象相关类及宏常用功能获取类相关内容以及委托调用 使用场景 Qt基于强大的元对象系统实现反射机制; 在复杂的开发需求中,我们希望通过一些手段映射出我们的类(映射对象) 然后直接使用,通过&#xff0…...

卷积神经网络(CNN)的计算量和参数怎么准确估计?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 1. 卷积层(Convolutional Layer) a) 计算量估计: 卷积层的 FLOPs 2 * H_out * W_out * C_in * C_out * K_h * K_w 详细解释: H_out, W_out&#xff…...

Ruby基础语法

Ruby 是一种动态、反射和面向对象的编程语言,它以其简洁的语法和强大的功能而受到许多开发者的喜爱。以下是 Ruby 语言的一些基本语法: 1. 打印输出 puts "Hello, Ruby!" 变量赋值 x 10 name "John" 2. 数据类型 Ruby 有多种…...

插入排序C++

题目: 样例解释: 【样例解释 #1】 在修改操作之前,假设 H 老师进行了一次插入排序,则原序列的三个元素在排序结束后所处的位置分别是 3,2,1。 在修改操作之后,假设 H 老师进行了一次插入排序,则原序列的三个…...

修改ID不能用关键字作为ID校验器-elementPlus

1、校验器方法 - forbiddenCharValidator const idUpdateFormRef ref(null); const forbiddenCharValidator (rule, value, callback) > {const forbiddenCharacters [as,for,default,in,join,left,inner,right,where,when,case,select];for (let forbiddenCharacter o…...

一文详解WebRTC、RTSP、RTMP、SRT

背景 好多开发者,希望对WebRTC、RTSP、RTMP、SRT有个初步的了解,知道什么场景该做怎样的方案选择,本文就四者区别做个大概的介绍。 WebRTC 提到WebRTC,相信好多开发者第一件事想到的就是低延迟,WebRTC(W…...

全国职业院校技能大赛(大数据赛项)-平台搭建Zookeeper笔记

ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务,为分布式应用提供一致性服务。它的设计目标是简化分布式系统的管理,保证多个节点之间的数据一致性和协调工作。ZooKeeper提供了类似文件系统的层次化命名空间,用来存储和管理元数…...

不同领域神经网络一般选择什么模型作为baseline(基准模型)

在神经网络研究中,选择合适的baseline(基线模型)是评估新方法有效性的重要步骤。基线模型通常是领域内公认的、性能良好的参考模型,用于比较和验证新提出模型的优势。以下是一些在不同任务和领域中常见的基线模型选择:…...

华为-IPv6与IPv4网络互通的6to4自动隧道配置实验

IPv4向IPv6的过渡不是一次性的,而是逐步地分层次地。在过渡时期,为了保证IPv4和IPv6能够共存、互通,人们发明了一些IPv4/IPv6的互通技术。 本实验以6to4技术为例,阐述如何配置IPv6过渡技术。 配置参考 R1 # sysname R1 # ipv6# interface GigabitEthernet0/0/1ip address 200…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 ​…...