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

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

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

一、简介

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

相关推荐

Excel新函数TEXTSPLIT太强大了,轻松搞定数据拆分!

我是【桃大喵学习记】,欢迎大家关注哟~,每天为你分享职场办公软件使用技巧干货!最近我把WPS软件升级到了版本号:12.1.0.15990的最新版本,最版本已经支持文本拆分函数TEXTSPLIT了,并...

Excel超强数据拆分函数TEXTSPLIT,从入门到精通!

我是【桃大喵学习记】,欢迎大家关注哟~,每天为你分享职场办公软件使用技巧干货!今天跟大家分享的是Excel超强数据拆分函数TEXTSPLIT,带你从入门到精通!TEXTSPLIT函数真是太强大了,轻松...

看完就会用的C++17特性总结(c++11常用新特性)

作者:taoklin,腾讯WXG后台开发一、简单特性1.namespace嵌套C++17使我们可以更加简洁使用命名空间:2.std::variant升级版的C语言Union在C++17之前,通...

plsql字符串分割浅谈(plsql字符集设置)

工作之中遇到的小问题,在此抛出问题,并给出解决方法。一方面是为了给自己留下深刻印象,另一方面给遇到相似问题的同学一个解决思路。如若其中有写的不好或者不对的地方也请不加不吝赐教,集思广益,共同进步。遇到...

javascript如何分割字符串(javascript切割字符串)

javascript如何分割字符串在JavaScript中,您可以使用字符串的`split()`方法来将一个字符串分割成一个数组。`split()`方法接收一个参数,这个参数指定了分割字符串的方式。如...

TextSplit函数的使用方法(入门+进阶+高级共八种用法10个公式)

在Excel和WPS新增的几十个函数中,如果按实用性+功能性排名,textsplit排第二,无函数敢排第一。因为它不仅使用简单,而且解决了以前用超复杂公式才能搞定的难题。今天小编用10个公式,让你彻底...

Python字符串split()方法使用技巧

在Python中,字符串操作可谓是基础且关键的技能,而今天咱们要重点攻克的“堡垒”——split()方法,它能将看似浑然一体的字符串,按照我们的需求进行拆分,极大地便利了数据处理与文本解析工作。基本语...

go语言中字符串常用的系统函数(golang 字符串)

最近由于工作比较忙,视频有段时间没有更新了,在这里跟大家说声抱歉了,我尽快抽些时间整理下视频今天就发一篇关于go语言的基础知识吧!我这我工作中用到的一些常用函数,汇总出来分享给大家,希望对...

无规律文本拆分,这些函数你得会(没有分隔符没规律数据拆分)

今天文章来源于表格学员训练营群内答疑,混合文本拆分。其实拆分不难,只要规则明确就好办。就怕规则不清晰,或者规则太多。那真是,Oh,mygod.如上图所示进行拆分,文字表达实在是有点难,所以小熊变身灵...

Python之文本解析:字符串格式化的逆操作?

引言前面的文章中,提到了关于Python中字符串中的相关操作,更多地涉及到了字符串的格式化,有些地方也称为字符串插值操作,本质上,就是把多个字符串拼接在一起,以固定的格式呈现。关于字符串的操作,其实还...

忘记【分列】吧,TEXTSPLIT拆分文本好用100倍

函数TEXTSPLIT的作用是:按分隔符将字符串拆分为行或列。仅ExcelM365版本可用。基本应用将A2单元格内容按逗号拆分。=TEXTSPLIT(A2,",")第二参数设置为逗号...

Excel365版本新函数TEXTSPLIT,专攻文本拆分

Excel中字符串的处理,拆分和合并是比较常见的需求。合并,当前最好用的函数非TEXTJOIN不可。拆分,Office365于2022年3月更新了一个专业函数:TEXTSPLIT语法参数:【...

站长在线Python精讲使用正则表达式的split()方法分割字符串详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用正则表达式的split()方法分割字符串详解》。使用正则表达式分割字符串在Python中使用正则表达式的split(...

Java中字符串分割的方法(java字符串切割方法)

技术背景在Java编程中,经常需要对字符串进行分割操作,例如将一个包含多个信息的字符串按照特定的分隔符拆分成多个子字符串。常见的应用场景包括解析CSV文件、处理网络请求参数等。实现步骤1.使用Str...

因为一个函数strtok踩坑,我被老工程师无情嘲笑了

在用C/C++实现字符串切割中,strtok函数经常用到,其主要作用是按照给定的字符集分隔字符串,并返回各子字符串。但是实际上,可不止有strtok(),还有strtok、strtok_s、strto...