百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Python常用标准库及第三方库7-psutil模块(运维相关)

itomcoil 2025-02-27 15:35 47 浏览

一、简介

psutil是一个跨平台库,能够实现获取系统运行的进程和系统利用率(内存,CPU,磁盘,网络等),主要用于系统监控,性能分析和系统资源及进程的管理。

安装命令:pip install psutil

导入方式:import psutil

官方文档:
https://github.com/giampaolo/psutil

二、用法示例

1.CPU相关

# 获取CPU数量
print(psutil.cpu_count())  # 8
# CPU统计数据
print(psutil.cpu_stats())  # scpustats(ctx_switches=5579, interrupts=148976, soft_interrupts=1455634012, syscalls=65346)
# CPU使用率
print(psutil.cpu_percent(interval=1, percpu=True))  # [26.8, 25.8, 20.4, 17.3, 19.6, 11.2, 9.1, 5.0]
# 获取CPU完整信息
print(psutil.cpu_times())  # scputimes(user=789760.31, nice=0.0, system=770602.5, idle=11451189.04)

2.内存相关

为了便于将单位从bit转换为g,先定义一个bit_switch_g的函数

def bit_switch_g(total):
    """将单位从Bit转换为G"""
    return round(total / 1024 / 1024 / 1024, 2)
mem = psutil.virtual_memory()
print(f"总内存: {bit_switch_g(mem.total)}G")  # 总内存: 8.0G
print(f"可用内存: {bit_switch_g(mem.available)}G")  # 可用内存: 1.19G
print(f"空闲内存: {bit_switch_g(mem.free)}G")  # 空闲内存: 0.08G
print(f"已用内存占比: {mem.percent}%")  # 已用内存占比: 86.9%
# 获取交换区内存
print(psutil.swap_memory())  # sswap(total=12884901888, used=12167741440, free=717160448, percent=94.4, sin=11638007857152, sout=76482134016)

3.磁盘相关

disk_usage = psutil.disk_usage("/Users")
print(disk_usage)  # sdiskusage(total=245107195904, used=179994669056, free=35738259456, percent=83.4)
print(f"磁盘总空间:{bit_switch_g(disk_usage.total)}G")  # 磁盘总空间:228.27G
print(f"磁盘已用空间:{bit_switch_g(disk_usage.used)}G")  # 磁盘已用空间:167.57G
print(f"磁盘剩余空间:{bit_switch_g(disk_usage.free)}G")  # 磁盘剩余空间:33.36G
print(f"磁盘已用空间占比:{disk_usage.percent}%")  # 磁盘已用空间占比:83.4%
# 获取硬盘总的io数和读写信息,加上"perdisk=True"参数获取单个分区的io和读写信息
print(psutil.disk_io_counters(perdisk=True))

4.网络相关

print(psutil.net_io_counters())  # 获取网络总的IO情况
print(psutil.net_io_counters(pernic=True))  # 获取网卡的io情况
print(psutil.net_if_addrs())  # 获取网络接口信息

5.系统相关

# 获取开机时间,默认返回形式为时间戳
print(time.strftime("%Y-%m-%d,%H:%M:%S", time.localtime(psutil.boot_time())))  # 2024-07-08,09:53:04
# 遍历系统进程,打印进程名、进程号、进程状态
ps = psutil.pids()
for pid in ps:
    pid_info = psutil.Process(pid)
    name = pid_info.name()
    pid_num = pid_info.pid
    status = pid_info.status()
    print(f"进程名称:{name},进程号{pid_num},进程状态{status}")
# 获取单个进程
p = psutil.Process(pid=97674)
print(f"进程名称:{p.name()},进程号{p.pid},进程状态{p.status()}")  # 进程名称:Google Chrome Helper (Renderer),进程号97674,进程状态running

相关推荐

《Queendom》宣布冠军!女团MAMAMOO四人激动落泪

网易娱乐11月1日报道据台湾媒体报道,南韩女团竞争回归的生死斗《Queendom》昨(10/31)晚播出大决赛,并以直播方式进行,6组女团、女歌手皆演唱新歌,并加总前三轮的赛前赛、音源成绩与直播现场投...

正确复制、重写别人的代码,不算抄袭

我最近在一篇文章提到,工程师应该怎样避免使用大量的库、包以及其他依赖关系。我建议的另一种方案是,如果你没有达到重用第三方代码的阈值时,那么你就可以自己编写代码。在本文中,我将讨论一个在重用和从头开始编...

HTML DOM tr 对象_html event对象

tr对象tr对象代表了HTML表格的行。HTML文档中出现一个<tr>标签,就会创建一个tr对象。tr对象集合W3C:W3C标签。集合描述W3Ccells返回...

JS 打造动态表格_js如何动态改变表格内容

后台列表页最常见的需求:点击表头排序+一键全选。本文用原生js代码实现零依赖方案,涵盖DOM查询、排序算法、事件代理三大核心技能。效果速览一、核心思路事件入口:为每个<th>绑...

连肝7个晚上,总结了66条计算机网络的知识点

作者|哪吒来源|程序员小灰(ID:chengxuyuanxiaohui)计算机网络知识是面试常考的内容,在实际工作中经常涉及。最近,我总结了66条计算机网络相关的知识点。1、比较http0....

Vue 中 强制组件重新渲染的正确方法

作者:MichaelThiessen译者:前端小智来源:hackernoon有时候,依赖Vue响应方式来更新数据是不够的,相反,我们需要手动重新渲染组件来更新数据。或者,我们可能只想抛开当前的...

为什么100个前端只有1人能说清?浏览器重排/重绘深度解析

面试现场的"致命拷问""你的项目里做过哪些性能优化?能具体讲讲重排和重绘的区别吗?"作为面试官,我在秋招季连续面试过100多位前端候选人,这句提问几乎成了必考题。但令...

HTML DOM 介绍_dom4j html

HTMLDOM(文档对象模型)是一种基于文档的编程接口,它是HTML和XML文档的编程接口。它可以让开发人员通过JavaScript或其他脚本语言来访问和操作HTML和XML文档...

JavaScript 事件——“事件流和事件处理程序”的注意要点

事件流事件流描述的是从页面中接收事件的顺序。IE的事件流是事件冒泡流,而NetscapeCommunicator的事件流是事件捕获流。事件冒泡即事件开始时由最具体的元素接收,然后逐级向上传播到较为不...

探秘 Web 水印技术_水印制作网页

作者:fransli,腾讯PCG前端开发工程师Web水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印)...

国外顶流网红为流量拍摄性侵女学生?仅被封杀三月,回归仍爆火

曾经的油管之王,顶流网红DavidDobrik复出了。一切似乎都跟他因和成员灌酒性侵女学生被骂到退网之前一样:住在950万美元的豪宅,开着20万美元的阿斯顿马丁,每条视频都有数百万观看...人们仿佛...

JavaScript 内存泄漏排查方法_js内存泄漏及解决方法

一、概述本文主要介绍了如何通过Devtools的Memory内存工具排查JavaScript内存泄漏问题。先介绍了一些相关概念,说明了Memory内存工具的使用方式,然后介绍了堆快照的...

外贸独立站,网站优化的具体内容_外贸独立站,网站优化的具体内容有哪些

Wordpress网站优化,是通过优化代码、数据库、缓存、CSS/JS等内容,提升网站加载速度、交互性和稳定性。网站加载速度,是Google搜索引擎的第一权重,也是SEO优化的前提。1.优化渲染阻塞。...

这8个CSS工具可以提升编程速度_css用什么编译器

下面为大家推荐的这8个CSS工具,有提供函数的,有提供类的,有提取代码的,还有收集CSS的统计数据的……请花费两分钟的时间看完这篇文章,或许你会找到意外的惊喜,并且为你的编程之路打开了一扇新的大门。1...

vue的理解-vue源码 历史 简介 核心特性 和jquery区别 和 react对比

一、从历史说起Web是WorldWideWeb的简称,中文译为万维网我们可以将它规划成如下的几个时代来进行理解石器时代文明时代工业革命时代百花齐放时代石器时代石器时代指的就是我们的静态网页,可以欣...