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

psutil, 一个超级有用的Python库

Python的psutil是一个跨平台的库,可以用于获取系统运行时的各种信息,包括CPU使用率、内存使用情况、磁盘和网络信息等。它主要用来做系统监控,性能分析,进程管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。

pip3 install psutil 进行安装

一 获取CPU的时间

import psutilif __name__ == "__main__":     print(psutil.cpu_times())    print("user time is %s" % psutil.cpu_times().user)    print("nice is %s" % psutil.cpu_times().nice)    print("system is %s" % psutil.cpu_times().system)    print("cpu count is %s" % psutil.cpu_count())    print("cpu percent is %s" % psutil.cpu_percent())

执行结果如下:psutil.cpu_times()返回的是一个命名元组,可以用psutil.cpu_times().user的方式访问具体的元素

图片

二 CPU监控,实现top功能。每秒刷新一次,累计10次

import psutilif __name__ == "__main__":     for x in range(10):        print(psutil.cpu_percent(interval=1,percpu=True))

执行结果

图片

psutil.cpu_stats(): 以命名元组的形式返回CPU的统计信息,包括上下文切换,中断,软中断和系统调用次数

​​​​​​​

import psutilif __name__ == "__main__":     print(psutil.cpu_stats())    print("上下文切换次数: "+str(psutil.cpu_stats().ctx_switches))    print("中断次数: "+str(psutil.cpu_stats().interrupts))    print("软中断次数: "+str(psutil.cpu_stats().soft_interrupts))    print("系统调用次数: "+str(psutil.cpu_stats().syscalls))

执行结果

图片

三 网络信息:返回发送和接送的字节数,还包括错误的接收发送包以及网络接口统计

​​​​​​​

import psutilif __name__ == "__main__":     print(psutil.net_io_counters())              #获取网络读写字节/包的个数    for interface in psutil.net_if_addrs():      #获取网络接口信息        print(interface)    print(psutil.net_if_stats())                 #获取网络接口状态

执行结果:

图片

psutil.net_connections() 还能获取当前网络连接信息。

四 获取内存信息

采用psutil.virtual_memory()得到如下信息:

1 total:内存总数

2 used:已使用的内存数

3 free:空闲的内存数

4 buffers:缓冲使用数

5 cache:缓冲使用数

6 swap:交换分区使用数

运行结果

图片

以avaiable为例:单位是字节,值等于 linux中下面几个的相加和free + buffers + cached。在上面的结果中avaiable=8426237952. 我们来看下Linux中free命令得到的结果。单位是KB

free+buff+cache=2977412+5699428=975056KB=8676840*1000=8676840000和python算出来的8426237952还是有些差别

图片

下面的脚本可以用来更直观的看内存使用情况

​​​​​​​

import psutil
if __name__ == "__main__":     free=str(round(psutil.virtual_memory().free / (1024.0*1024.0*1024.0),2))    total=str(round(psutil.virtual_memory().total / (1024.0*1024.0*1024.0),2))    memory=int(psutil.virtual_memory().total - psutil.virtual_memory().free) /  \        float(psutil.virtual_memory().total)        print("物理内存: %s G" % total)    print("剩余物理内存: %s G" % free)    print("物理内存使用率: %s %%" % int(memory * 100))

图片

六 获取磁盘信息:psutil.disk_partitions

​​​​​​​

import psutilif __name__ == "__main__":     io=psutil.disk_partitions()    print('---------------------磁盘信息---------------------')    print("系统磁盘信息: " + str(io))    for i in io:        o=psutil.disk_usage(i.device)        print("总容量: "+str(int(o.total/(1024.0)*1024.0*1024.0))+"G")        print("已用容量: "+str(int(o.used/(1024.0)*1024.0*1024.0))+"G")        print("可用容量: "+str(int(o.free/(1024.0)*1024.0*1024.0))+"G")

七 获取进程

psutil.pids()获取当前所有的进程pid。这和shell 中ps -aux得到的结果是一样的。psutil.Process(PID) 通过传入具体的进程pid,可以得到这个进程对象。就可以得到这个进程的所有信息

下面的代码打印出所有进程的信息

​​​​​​​

import psutil
if __name__ == "__main__":     id_list=psutil.pids()                 # 得到所有进程PID, id_list是一个列表    for id in id_list:        p=psutil.Process(id)              # 得到每个进程        print("process name:%s,process path:%s,process state:%s,process create time:%s" %                 (p.name(),p.exe(),p.status(),p.create_time()))

图片

下面是能获取进程信息的方法

p.name:进程名

p.exe():进程bin路径

p.status():进程状态

p.create_time():进程创建时间

p.uids():进程UID信息

p.gids():进程GID

p.cpu_times():进程CPU信息

p.cpu_affinity():进程CPU亲和度

p.memory_info():进程内存利用率.

p.memory_percent():进程内存利用率

p.io_counters():进程IO信息

p.connections():返回打开进程socket的namedtuples列表

p.cwd():进程的工作目录绝对路径

p.io_counters(): 进程的IO信息,包括读写IO数字及参数

p.num_threads(): 进程开启的线程数

更多内容在

相关文章:

psutil, 一个超级有用的Python库

Python的psutil是一个跨平台的库,可以用于获取系统运行时的各种信息,包括CPU使用率、内存使用情况、磁盘和网络信息等。它主要用来做系统监控,性能分析,进程管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、…...

[Python]`threading.local`创建线程本地数据

在Python中,threading.local是一个用于创建线程本地数据的工具。它允许每个线程拥有自己独立的变量副本,这样可以在多线程程序中避免共享变量带来的问题。 通过使用threading.local,你可以为每个线程创建一个独立的变量空间,这样…...

删除数据表

oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 删除数据表属于数据库对象的操作 drop table 表名称; 删除 emp30 表 SQL> drop table emp30;表已删除。 上面这个语句运行后,就会把数据表 emp30 删除 在…...

前端自带的base64转化方法

前端html的base64使用方法window.btoa()和window.atob()_html用window.btoa();-CSDN博客...

图论(二)之最短路问题

最短路 Dijkstra求最短路 文章目录 最短路Dijkstra求最短路栗题思想题目代码代码如下bellman-ford算法分析只能用bellman-ford来解决的题型题目完整代码 spfa求最短路spfa 算法思路明确一下松弛的概念。spfa算法文字说明:spfa 图解: 题目完整代码总结ti…...

.NET Core 日志记录功能详解

在软件开发和运维过程中,日志记录是一个非常重要的功能。它可以帮助开发者跟踪应用程序的运行状况、诊断和监控问题。.NET Core 提供了一个灵活且易于使用的日志系统,本文将详细介绍.NET Core日志的相关概念、配置和使用方法。 1. 什么是日志记录以及它…...

docker——启动各种服务

1.Mysql 2.Redis 3.nginx 4.ES 注意:ES7之后环境为 -e ELASTICSEARCH_HOSTS http://ip地址:9200...

git远程仓库使用

赋值这个地址clone 克隆之后 cd slam_oncloud/ git remote add chenxnew ssh://git192.168.3.40:1022/chenxiao/slam_oncloud.git 查看一下 linuxchenxiao:/media/linux/mydisk/cloud_slam/slam_oncloud$ git remote add chenxnew ssh://git192.168.3.40:1022/chenxiao/sla…...

js导出的excel文件无法打开/打开乱码,excel无法打开xxx.xlsx因为文件格式或文件扩展无效

excel无法打开xxx.xlsx因为文件格式或文件扩展无效 使用 a 标签导出这里就不细说了,直接说上述问题解决方案 在调用导出接口的时候加上两个参数 responseType: “blob” responseEncoding: “utf8” export function test(data) {return util({url: /test,method: …...

透明多级分流系统(用户端缓存和负载均衡)

部件考虑 有些设备位于客户端或者网络边缘,能够迅速响应用户请求,避免给cpu和数据库带来压力,比如,本地缓存,内容分发网络,反向代理等。 有些设备处理能力能够线性扩展,易于伸缩,应…...

Python sort从大到小排序面试题

在Python中,你可以使用内置的sorted()函数或者列表的sort()方法来对列表中的元素进行从大到小的排序。 使用sorted()函数: numbers [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] sorted_numbers sorted(numbers, reverseTrue) # 设置reverseTrue实现从大到小排…...

【Stable Diffusion】入门:AI绘画提示词+参数设置攻略

目录 1 提示词1.1 分类和书写方式1.1.1 内容型提示词1.1.2 标准化提示词1.1.3 通用模板 1.2 权重1.2.1 套括号1.2.2 数字权重1.2.3 进阶语法 1.3 负面提示词 2 参数详解2.1 Sampling steps2.2 Sampling method2.3 Width, Height2.4 CFG Scale2.5 Seed2.6 Batch count, Batch si…...

Qt使用Q_DECLARE_INTERFACE Q_INTERFACES宏实现接口类使用qobject_cast进行类型转换

在写抽象类或者接口的时候&#xff0c;肯定是不能继承QObject的 但是又想使用qobject_cast进行类型转换&#xff0c;使用以下办法就能实现 #ifndef FACTORYINTERFACE_H__ #define FACTORYINTERFACE_H__ #include <QObject> class FactoryInterface{ public:FactoryInterf…...

docker离线搭建仓库

要在Docker中搭建本地仓库&#xff0c;可以按照以下步骤进行操作&#xff1a; 首先安装 Docker。根据不同的操作系统选择合适的版本并完成安装过程。打开命令行工具&#xff08;如Terminal或PowerShell&#xff09;&#xff0c;运行以下命令来创建一个新的容器并将其设置为本地…...

ABC344 A-E题解

文章目录 A题目AC Code&#xff1a; B题目AC Code&#xff1a; C题目AC Code&#xff1a; D题目AC Code&#xff1a; E题目AC Code&#xff1a; 不易不难&#xff0c;写到5题很简单&#xff0c;但是要有足够的思维能力。 A 题目 我们用一个 flag 变量记录我们是不是在两个竖…...

Jeecg-boot 初次启动项目失败

1.将IDEA的字符编码全部改成utf-8 2. 更改database的密码 3.换个jdk重新启动...

封装的echarts子组件使用watch监听option失效的问题

项目场景&#xff1a; 我在项目里面封装了一个echarts组件&#xff0c;组件接收一个来自外部的option,然后我用了一个watch函数去监听这个option的变化&#xff0c;option变化之后&#xff0c;销毁&#xff0c;然后再新建一个charts表 碎碎念 问题如标题所示&#xff0c;这篇…...

爬虫入门到精通_框架篇14(PySpider架构概述及用法详解)

官方文档 Sample Code&#xff1a; from pyspider.libs.base_handler import *class Handler(BaseHandler):crawl_config {}# minutes24 * 60&#xff1a;每隔一天重新爬取every(minutes24 * 60)def on_start(self):self.crawl(http://scrapy.org/, callbackself.index_page)…...

WPF DataGrid常用属性

AlternationCount属性&#xff1a;表示有几行不同的颜色来回替换&#xff0c;如果设置2则表示有两个颜色交替循环 AutoGenerateColumns属性&#xff1a;是否生成列 CanUserAddRows属性&#xff1a;用户是否可以添加行 CanUserDeleteRows属性&#xff1a;用户是否可以删除行 …...

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Stepper)

步骤导航器组件&#xff0c;适用于引导用户按照步骤完成任务的导航场景。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 仅能包含子组件StepperItem。 接口 Stepper(value?: { index?…...

【医疗信息化开发者必修课】:C# FHIR SDK实战指南——从零构建符合HL7 FHIR R4规范的患者数据服务

第一章&#xff1a;FHIR标准与医疗信息化开发全景概览 FHIR&#xff08;Fast Healthcare Interoperability Resources&#xff09;是由HL7组织制定的现代医疗数据交换标准&#xff0c;旨在通过RESTful API、结构化资源和开放格式&#xff08;如JSON/XML&#xff09;弥合异构医疗…...

【Kali Linux】 2026.1 新功能详解

2026年3月24日发布&#xff0c;基于 2025.4 的更新&#xff0c;带来全新视觉体验和多项新工具&#xff01;&#x1f3a8; 2026 年度主题更新每年惯例的主题大换血&#xff0c;覆盖全流程&#xff1a;组件更新内容引导动画修复了实时镜像卡在第一帧的问题&#xff0c;循环更流畅…...

在超大数据集下 DuckDB 与 MySQL 查询速度对比卤

一、什么是urllib3&#xff1f; urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你&#xff1a; 发送各种 HTTP 请求&#xff08;GET, POST, PUT, DELETE等&#xff09;。 管理连接池&#xff0c;提高网络请求效率。 处理重试和重定向。 支…...

2026届必备的降AI率网站解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 可从以下方面入手&#xff0c;来有效降低文本被AIGC检测出的概率&#xff1a;一点&#xff0…...

银河麒麟系统部署Ollama:从依赖修复到服务自启全攻略

1. 银河麒麟系统部署Ollama的挑战与解决方案 国产操作系统银河麒麟以其安全稳定的特性受到越来越多企业和开发者的青睐。但在实际部署AI工具时&#xff0c;我们经常会遇到一些特有的兼容性问题。最近我在一个政府项目中部署Ollama大模型服务时就踩了个典型的坑——系统自带的li…...

网盘直链解析工具:突破下载限制的技术方案与实践指南

网盘直链解析工具&#xff1a;突破下载限制的技术方案与实践指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...

C++和OpenGL实现3D游戏编程【连载6】——不规则图形的纹理贴图(附源码)

🔥C++和OpenGL实现3D游戏编程【目录】 1、本节实现的内容 上一节我们讨论了纹理贴图的相关基础操作,但上一节的纹理贴图操作基本上都是规则图形,包括圆形和球形虽然复杂一点,但是它也是规则的。这一节课我们要讨论一下,怎么在不规则图形上纹理贴图,就比如文章下图的心形…...

知识图谱嵌入评估实战:从MRR到HITS@n的指标解析与应用

1. 知识图谱嵌入评估指标入门指南 第一次接触知识图谱嵌入评估时&#xff0c;我被各种缩写搞得晕头转向。MRR、MR、HITSn这些指标就像天书一样&#xff0c;直到我在实际项目中踩了几个坑才真正理解它们的意义。现在我就用最直白的语言&#xff0c;带你快速掌握这些核心指标。 …...

文件(内部/外部)存储

Android 文件存储主要分为**内部存储**、**外部存储**(现在叫分区存储)和**其他介质**(如 SD 卡、USB)。理解它们的区别对开发很重要,特别是 Android 10+ 引入的**分区存储**机制。 1. 内部存储 (Internal Storage) 特点:私有、安全、随应用卸载而删除。其他应用和用户…...

如何用Python+Neo4j构建医疗知识图谱?从数据清洗到因果推断实战

医疗知识图谱实战&#xff1a;用PythonNeo4j实现药品副作用因果推断 在医疗AI领域&#xff0c;知识图谱正成为连接海量医学数据与临床决策的桥梁。当一位患者同时服用多种药物时&#xff0c;如何准确预测潜在的药物相互作用&#xff1f;当流行病学研究发现某种症状与基因突变相…...