python psutil模块常用方法

news2024/9/28 23:36:54

psutil 是一个功能强大的跨平台第三方库,用于检索系统相关信息和进程管理。它提供了一些方便的函数和方法,可以获取 CPU 使用率、内存使用情况、磁盘信息、网络统计数据以及进程列表等。

1. 安装psutil

pip install psutil

2. 获取 CPU 使用率

import psutil

cpu_count = psutil.cpu_count()
print('逻辑CPU的个数:%s' % cpu_count)

cpu_count = psutil.cpu_count(logical=False)
print('物理CPU的个数:%s' % cpu_count)

# interval=1表示在获取CPU使用率之前等待的秒数,默认为0秒
cpu_percent = psutil.cpu_percent(interval=1)
print(f"CPU 整体使用率: {cpu_percent}%")

# percpu=True表示将每个逻辑CPU的使用率都返回,而不仅仅返回总体的使用率
cpu_percent = psutil.cpu_percent(interval=1,  percpu=True)
print(f"各个逻辑CPU 使用率: {cpu_percent}")

打印结果如图:

3. 获取内存使用情况

import psutil

memory = psutil.virtual_memory()
total_memory = memory.total // (1024 ** 3)  # 总内存大小
used_memory = memory.used // (1024 ** 3)  # 已使用内存大小
percent_memory = memory.percent  # 内存使用百分比
swap = psutil.swap_memory().total // (1024 ** 3)  # 获取系统的swap交换分区大小
print(f"总内存: {total_memory}GB")
print(f"已使用内存: {used_memory}GB")
print(f"内存使用率: {percent_memory}%")
print(f"swap交换分区总内存: {swap}GB")

打印结果如图:

4. 获取磁盘使用情况

import psutil

# 获取磁盘分区列表
disk_partitions = psutil.disk_partitions()
for partition in disk_partitions:
    print(f"设备: {partition.device}")
    print(f"挂载点: {partition.mountpoint}")
    print(f"文件系统类型: {partition.fstype}")
    print()

# 获取指定磁盘的使用率
disk_usage = psutil.disk_usage('C:/')
total_disk = disk_usage.total // (1024 ** 3)  # 总磁盘空间
used_disk = disk_usage.used // (1024 ** 3)  # 已使用磁盘空间
percent_disk = disk_usage.percent  # 磁盘使用百分比
print(f"C盘总磁盘空间: {total_disk}GB")
print(f"已使用磁盘空间: {used_disk}GB")
print(f"磁盘使用率: {percent_disk}%")

打印结果如图:

附:我的电脑磁盘展示

5. 获取网络统计数据

import psutil
import datetime

# psutil.net_io_counters()函数返回的是系统启动以来的网络数据统计信息,而不是指定时间范围内的数据
net_io = psutil.net_io_counters()
bytes_sent = net_io.bytes_sent  # 发送的字节数
bytes_recv = net_io.bytes_recv  # 接收
print(f"发送的字节数: {bytes_sent / (1024 ** 2)}M")
print(f"接收的字节数: {bytes_recv / (1024 ** 2)}M")

打印结果如图:

6. 获取进程信息

import psutil

processes = list(psutil.process_iter())
print('=' * 100)
# 获取所有正在运行的进程,进程较多,这里只打印前5个
for process in processes[:5]:
    print(f"PID: {process.pid}, Name: {process.name()}")
print('=' * 100)

# 获取指定进程的详细信息(按PID或名称)
pid = 232   # 进程的PID
process = psutil.Process(pid)

# 或者按进程名称查找
# process_name = 'python.exe'
# process = None
# for p in psutil.process_iter(['name']):
#     if p.info['name'] == process_name:
#         process = p
#         break

if process is not None:
    print(f"PID: {process.pid}")
    print(f"Name: {process.name()}")
    print(f"Status: {process.status()}")
    print(f"CPU Usage: {process.cpu_percent()}%")
    print(f"Memory Usage: {process.memory_info().rss/(1024 ** 2)} M")
else:
    print("Process not found.")

print('=' * 100)
# 终止指定的进程
pid = 12345   # 进程的PID

try:
    process = psutil.Process(pid)
    process.terminate()
    print(f"Process {pid} terminated.")
except psutil.NoSuchProcess:
    print(f"Process {pid} not found.")

打印结果如图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/730606.html

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

相关文章

flutter聊天界面-聊天列表 下拉加载更多历史消息

flutter聊天界面-聊天列表 下拉加载更多历史消息 在之前实现了flutter聊天界面的富文本展示内容、自定义表情键盘实现、加号【➕】更多展开相机、相册等操作Panel、消息气泡展示实现Flexible。这里把实现的聊天界面的滑动列表及下拉加载更多历史消息记录一下 聊天界面的列表使…

MySQL索引优化原则和失效情况

目录 1. 全值匹配2. 最佳左前缀法则3. 不要在索引列上做任何计算4. 范围之后全失效5. 尽量使用覆盖索引6. 使用不等于&#xff08;!或<>&#xff09;会使索引失效7. is null 或 is not null也无法使用索引8. like通配符以%开头会使索引失效9. 字符串不加单引号导致索引失…

程序员的悲哀是什么?

点击下方“JavaEdge”&#xff0c;选择“设为星标” 第一时间关注技术干货&#xff01; 免责声明~ 切记&#xff0c;任何文章不要过度深思&#xff08;任何东西都无法经得起审视&#xff0c;因为这世上没有同样的成长环境&#xff0c;也没有同样的认知水平同时也「没有适用于所…

大模型高效训练基础知识:梯度累积(Gradient Accumulationn)

梯度累积 梯度累积&#xff08;Gradient Accumulation&#xff09;的基本思想是将一次性的整批参数更新的梯度计算变为以一小步一小步的方式进行&#xff08;如下图&#xff09;&#xff0c;具体而言该方法以小批次的方式进行模型前向传播和反向传播&#xff0c;过程中迭代计算…

变革管理中的几个不错的模型小结

其他的变革模型&#xff1a; 变革管理流程&#xff1a;

二、Java的变量

二、变量 2.1、关键字与保留字 关键字 定义&#xff1a;赋予特殊含义&#xff0c;用做专门用途的字符串 特点&#xff1a;关键字的所有字母都为小写 保留字&#xff08;reserved word&#xff09; 现有Java版本尚未使用&#xff0c;但以后版本可能会作为关键字使用。自己命名…

使用PYQT制作人才交流管理系统

利用使用PYQT制作一个人才交流管理系统&#xff0c;先使用QT designer.exe设计好人才交流管理系统的各个UI界面&#xff0c;然后利用pyuic把生成的ui界面编译为py文件&#xff0c;在主函数文件内创建一个类继承ui.py界面的类&#xff0c;即可完成数据库逻辑与 GUI 代码分离&…

小米不再忍耐,裁员三分之一强势反击印度,印度制造或因此梦破

就在小米公司表态继续投资印度之后不久&#xff0c;印度媒体报道指小米印度公司的员工数量从1500人减少到1000人左右&#xff0c;这显示出小米开始强势反击印度&#xff0c;业界人士指出此举的影响远不止于此&#xff0c;结果很可能是导致印度制造的梦想破灭。 1.小米为印度手机…

软件工程——第9章面向对象方法学引论知识点整理

本专栏是博主个人笔记&#xff0c;主要目的是利用碎片化的时间来记忆软工知识点&#xff0c;特此声明&#xff01; 文章目录 1.当前最好的软件开发技术是&#xff1f; 2.面向对象的原则是什么&#xff1f; 3.人们把客观世界中的实体抽象为什么&#xff1f; 4.软件系统本质上…

主诉病程时长提取

编写Python函数 import re def structured_pro(original_text,keyword,out_unitNone):pattern_split_str[。&#xff0c;]pattern_splitre.compile(pattern_split_str,re.I|re.M)original_listpattern_split.split(original_text)pattern_keywordre.compile(keyword,re.I|re.M…

目前最好的MicrosoftProject替代方案

Microsoft Project是一个功能强大的项目管理工具。然而它可能是昂贵的&#xff0c;并且可能不适合所有的项目管理需求。幸运的是&#xff0c;有几个Microsoft Project的替代方案提供了类似的特性和功能。在本文中我们将探索目前可用的一些最好的Microsoft Project替代方案。 1、…

12.4 ARM异常处理

目录 ARM异常处理&#xff08;一&#xff09; 异常 概念 异常处理机制 ARM异常源 概念 ARM异常源 ARM异常模式 ARM异常处理&#xff08;二&#xff09; ARM异常响应 异常向量表 异常返回 IRQ异常举例​编辑 ARM异常处理&#xff08;三 &#xff09; 异常优先级 …

自我介绍这样写?

已经帮小伙伴改了 500 多份简历了&#xff0c;也发现了一些大家写简历时的共性问题。其中让我印象比较深刻的一个点就是 自我介绍 &#xff0c;基本上所有同学的自我介绍都是这么写的&#xff1a; 读这篇文章的朋友们&#xff0c;你是不是也是这么写自我介绍的呢&#xff1f; 这…

MySQL索引优化整合案例实现

目录 1 JOIN优化1.1 JOIN算法原理1.2 in和exists函数 2 order by优化2.1 索引排序2.2 额外排序2.3 排序优化 3 索引单表优化案例3.1. 建表3.2. 单表索引分析3.1.1 需求3.1.2 优化 4 索引多表优化案例 1 JOIN优化 1.1 JOIN算法原理 1) JOIN回顾 JOIN 是 MySQL 用来进行联表操作…

在 Jetpack Compose 中创建 BottomAppBar

Jetpack Compose 是 Android 的现代 UI 工具包&#xff0c;它使得构建美观且功能强大的应用变得更加简单。在本文中&#xff0c;我们将探讨如何使用 Jetpack Compose 创建一个 BottomAppBar。 开始之前 确保你的开发环境已经设置好了 Jetpack Compose。你需要使用 Android Stu…

矩阵Matrices

目录 矩阵的变换 向量和矩阵 矩阵的变换 房子图形的矩阵变换&#xff08;wiggle动态变换&#xff09; uicontrol的‘style’类型&#xff1a; X house dot2dot(X) theta1 wiggle(X) function dot2dot(X) % DOT2DOT Connect the points from a 2-by-n matrix. X(:,end1) X…

5 类数据,洞察游戏的秘密

数据犹如一扇扇窗户&#xff0c;透过它&#xff0c;我们可以洞察到游戏世界内部的诸多秘密。这些秘密&#xff0c;就像是隐藏在房间深处的宝藏&#xff0c;只有真正理解并善用它们&#xff0c;我们才能创造出更吸引人的游戏&#xff0c;形成更成功的商业模式。 一个关键的问题是…

【Linux】—— 浅谈进程优先级

本期&#xff0c;我们将来聊聊的是关于进程优先级的相关知识&#xff01;&#xff01;&#xff01; 目录 序言 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;查看系统进程 1、PRI and NI 2、PRI vs NI &#xff08;三&#xff09;设置优先级 序言 首先…

关于antdesign-vue的layout组件样式失效问题(#components-layout-demo-custom-trigger)

1.错误描述 使用antdesign vue 中的layout作为主要布局&#xff0c;https://www.antdv.com/components/layout-cn 正常引入后&#xff0c;跟期望的样子不一样 期望中的样子 实际的样子 logo没有了&#xff0c;而且此时也无法更改样式。 此时的样式是这样的 无论怎么修改都…

Grafana 使用Rest API 作为数据源的实践

本文使用最新版本的Grafana 10 进行操作。 如果要使用Rest API 作为grafana 的数据源&#xff0c;可以选择安装一个Infinity的数据源插件。 如果创建数据源时&#xff0c;搜不到infinity&#xff0c;点击find more 查找安装该数据源插件 1. 安装 Infinity 数据源插件&#xf…