解锁Python库中操作系统级别模块psutil

目录

一、psutil库简介

二、安装psutil库

三、获取系统信息

1、获取CPU信息:

2、获取内存信息:

3、获取磁盘信息:

4、获取网络信息:

四、进程管理

五、系统信息和监控

六、总结


随着Python的普及,越来越多的开发者开始使用Python进行各种应用开发,包括系统管理、网络监控、数据分析等。在这些应用中,操作系统级别的信息是必不可少的。Python中的psutil库就是这样一个提供操作系统级别信息的库。本文将带你深入了解psutil库,从安装到使用,再到高级功能,让你全面掌握这个强大的工具。

一、psutil库简介

psutil是一个跨平台的Python库,可以获取系统运行状态和进程信息。它支持Windows、Linux和macOS等操作系统,提供了丰富的API来获取系统信息,如CPU、内存、磁盘、网络等。psutil库基于C语言编写,性能较高,且提供了Python的包装器,方便开发者使用。

二、安装psutil库

你可以使用pip命令来安装psutil库。打开终端或命令提示符,输入以下命令:
pip install psutil
如果你使用的是Anaconda环境,可以使用conda命令来安装:
conda install -c conda-forge psutil

三、获取系统信息

安装完成后,你可以在Python代码中导入psutil模块,并使用其提供的API来获取系统信息。下面是一些常用的API示例:

1、获取CPU信息:

import psutil  
  
# 获取CPU数量和类型  
cpu_count = psutil.cpu_count()  
cpu_type = psutil.cpu_times()  
print(f"CPU数量:{cpu_count}")  
print(f"CPU类型:{cpu_type}")

2、获取内存信息:

# 获取内存使用情况  
memory = psutil.virtual_memory()  
print(f"总内存:{memory.total} MB")  
print(f"已用内存:{memory.used} MB")  
print(f"空闲内存:{memory.free} MB")

3、获取磁盘信息:

# 获取磁盘使用情况  
disk = psutil.disk_usage('/')  # 获取根目录的磁盘使用情况  
print(f"磁盘总大小:{disk.total} MB")  
print(f"磁盘已用空间:{disk.used} MB")  
print(f"磁盘可用空间:{disk.free} MB")

4、获取网络信息:

# 获取网络接口信息  
network_interfaces = psutil.net_if_addrs()  # 获取所有网络接口的信息  
for interface_name, interface_addresses in network_interfaces.items():  
    for address in interface_addresses:  
        if str(address.family) == 'AddressFamily.AF_INET':  # 过滤IPv4地址  
            print(f"接口名称:{interface_name}")  
            print(f"IP地址:{address.address}")  
            print(f"MAC地址:{address.macaddress}")  
            print(f"广播地址:{address.broadcast}")  
            print(f"硬件地址:{address.hardware_addr}")  
            print(f"网络协议:{address.netmask}")  
            print(f"网络类型:{address.family}")  
            print(f"网络接口速率:{address.mtu}")  
            print(f"网络接口名称:{address.name}")  
            print(f"网络接口物理地址:{address.physical}")  
            print(f"网络接口广播地址:{address.broadcast}")  
            print(f"网络接口别名:{address.alias}")  
            print(f"网络接口硬件地址:{address.hardware_addr}")  
            print(f"网络接口MTU:{address.mtu}")  
            print("-------------------------------------------------------------------------")

除了以上基本功能外,psutil库还提供了许多高级功能,如进程管理、系统信息和监控等。下面我们继续深入探讨这些功能。

四、进程管理

psutil库提供了丰富的API来获取和操作进程。你可以使用以下API来获取当前运行中的进程信息:

import psutil  
  
# 获取所有进程  
processes = psutil.process_iter()  
for process in processes:  
    print(process.pid, process.name, process.cpu_percent(), process.memory_info())

上述代码将打印出每个进程的PID、名称、CPU占用率和内存使用情况。

你还可以使用psutil库来创建和管理进程。例如,以下代码使用psutil库启动了一个记事本进程:

import psutil  
  
# 启动记事本进程  
process = psutil.Popen(["notepad.exe"])  
print(f"记事本进程已启动,PID为:{process.pid}")

你还可以使用psutil库来杀掉进程。以下代码将杀掉PID为1234的进程:

import psutil  
  
# 杀掉指定PID的进程  
process = psutil.Process(1234)  
process.kill()  
print(f"进程已杀掉")

五、系统信息和监控

除了进程管理,psutil库还提供了许多用于系统信息和监控的API。例如,你可以使用以下代码来获取系统启动时间:

import psutil  
  
# 获取系统启动时间  
boot_time = psutil.boot_time()  
print(f"系统启动时间:{boot_time}")
你还可以使用psutil库来监控系统资源的使用情况。以下代码将每秒钟打印一次CPU占用率:

python
import psutil  
import time  
  
while True:  
    cpu_percent = psutil.cpu_percent(interval=1)  
    print(f"CPU占用率:{cpu_percent}%")  
    time.sleep(1)

六、总结

psutil库是一个功能强大的Python库,提供了丰富的API来获取和操作操作系统级别的信息。通过本文的介绍,你应该已经了解了psutil库的基本用法和高级功能。希望对你有所帮助,让你在Python开发中更加得心应手。如果你有任何疑问或需要进一步的帮助,请随时联系我。
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年美赛数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米,宽为12米&…

13.若依代码自动生成功能详解

文章目录 1.代码自动生成功能2.功能的使用3. 代码的导出和使用 1.代码自动生成功能 基于若依的目录结构,若依本身提供了代码生成功能,可以根据数据库表的内容,生成一些基本的CRUD的前后端的功能。本文将生成过程中的一些注意事项&#xff0c…

OpenGL排坑指南—贴图纹理绑定和使用

一、前言 在OpenGL学习 的纹理这一章中讲述了纹理贴图的使用方式,主要步骤是先创建一个纹理的对象,和创建顶点VAO类似,然后就开始绑定这个纹理,最后在循环中使用,有时候可能还要用到激活纹理单元的函数。然而&#xff…

了解Python中的requests.Session对象及其用途

前言 在Python的网络编程中,requests库是一个非常流行的HTTP客户端库,用于发送各种类型的HTTP请求。在requests库中,requests.Session对象提供了一种在多个请求之间保持状态的方法本文将探讨Python中的requests.Session对象及其用途&#xf…

大语言模型面试问题

自己在看面经中遇到的一些面试题,结合自己和理解进行了一下整理。 transformer中求和与归一化中“求和”是什么意思? 求和的意思就是残差层求和,原本的等式为y H(x)转化为y x H(x),这样做的目的是防止网络层数的加深而造成的梯…

微信小程序Burp抓包

方法有很多,工具也各有差异,主要是学代理流量的思路 Burp流量代理工具小程序 一、Burp证书导入 1、开启代理 开启浏览器的代理,火狐推荐FoxyProxy,Google推荐SwitchyOmega,设置代理为127.0.0.1:8080。 2、下载证书…

【Web】CTFSHOW PHP命令执行刷题记录(全)

目录 web29 web30 web31 web32 web33 web34 web35 web36 web37-39 web40 web41 (y4✌脚本) web42 -44 web45 web46 -49 web50 web51 web52 web53 web54 web55-56 web57 web58 web59 web60 web61 web62 web63-65 web66-67 w…

免 费 搭 建 多模式商城:b2b2c、o2o、直播带货一网打尽

鸿鹄云商 b2b2c产品概述 【b2b2c平台】,以传统电商行业为基石,鸿鹄云商支持“商家入驻平台自营”多运营模式,积极打造“全新市场,全新 模式”企业级b2b2c电商平台,致力干助力各行/互联网创业腾飞并获取更多的收益。从消…

c++学习笔记-STL案例-演讲比赛管理系统2

目录 功能介绍 代码结构部分 查看一下类图 1.Speaker.h 2.speechManager.h 3.speechManager.cpp 4.演讲比赛流程关系系统.cpp 功能介绍 speechManager.h函数包含演讲比赛流程的所有功能如下: 开始演讲比赛:完成整届比赛的流程,每…

图形化编程:未来的编程范式

在科技飞速发展的今天,编程已经成为了我们生活中不可或缺的一部分。从手机应用开发,到人工智能,再到物联网,无一不涉及到编程。然而,传统的文本编程方式对于初学者来说,往往显得复杂且难以理解。这就使得图…

uniapp日期加减切换,点击切换

先上完成后的页面&#xff1a;当前年年份不显示&#xff0c;不然完整显示。 可以切换和自定义选择。 html:样式和图片自定义。 <view class"image-text_30"><image click"delMonth" :src"require(/static/home/zuo.png)" class"…

STL标准库与泛型编程(侯捷)笔记5

STL标准库与泛型编程&#xff08;侯捷&#xff09; 本文是学习笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 参考链接 Youbute: 侯捷-STL标准库与泛型编程 B站: 侯捷 - STL Github:STL源码剖析中源码 https://github.com/SilverMaple/STLSourceCo…

【JVM 基础】类字节码详解

JVM 基础 - 类字节码详解 多语言编译为字节码在JVM运行Java字节码文件Class文件的结构属性从一个例子开始反编译字节码文件字节码文件信息常量池方法表集合类名 再看两个示例分析try-catch-finallykotlin 函数扩展的实现 源代码通过编译器编译为字节码&#xff0c;再通过类加载…

安谋科技“周易”NPU与飞桨完成II级兼容性测试,助力实现多样化AI部署

近日&#xff0c;安谋科技&#xff08;中国&#xff09;有限公司&#xff08;以下简称“安谋科技”&#xff09;“周易”NPU系列IP与飞桨已完成II级兼容性测试&#xff0c;测试结果显示&#xff0c;双方兼容性表现良好&#xff0c;整体运行稳定。这是安谋科技加入“硬件生态共创…

SaaS 电商设计 (六) 实现 id 生成器本地化生产 (附源码)

一.背景 1.1 背景 业务背景: 目前梳理 SaaS 系统中存在以下几种 Id 生成的场景. 财务系统: 财务在生产财务单的时候,获取财务单 Id ,满足分布式场景下能够获取全局Id即可. 支付系统:订单系统在进行外部提单过程中,需要将生成的订单号与外部的支付平台做对接.在具体开发调试…

400μA低功率接地故障断路器控制芯片D4147,内置精密感应放大器与带隙基准,适用于GFCI和RCD

低功率接地故障断路器&#xff08;GFI&#xff09;控制芯片D4147主要用于三线制GFCI输出接口、GFCI芯片断路器、便携式GFCI线路等领域的产品&#xff0c;侦测并防护火线对地故障和零线对负载短路故障。 功能介绍 D4147为低功率接地故障断路器&#xff08;GFI&#xff09;控制…

Zookeeper 和 naocs的区别

Nacos 和 ZooKeeper 都是服务发现和配置管理的工具&#xff0c;它们的主要区别如下&#xff1a;功能特性&#xff1a;Nacos 比 ZooKeeper 更加强大&#xff0c;Nacos 支持服务发现、动态配置、流量管理、服务治理、分布式事务等功能&#xff0c;而 ZooKeeper 主要用于分布式协调…

RK3568驱动指南|第十篇 热插拔-第117章uevent_helper实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

python json模块

json是JavaScript对象表示法的缩写&#xff0c;是一种轻量级的数据交换格式&#xff0c;经常被用于Web应用程序中。python中的json库是用于解析和生成json数据格式的库。 import jsondata {"name": "张三","age": 18,"hobbies": [&q…

Unity报错:[SteamVR] Not Initialized (109)的解决方法

问题描述 使用HTC vive 头像进行SteamVR插件的示例场景进行测试&#xff0c;发现头显场景无法跳转到运行场景&#xff08;Unity 项目可以运行&#xff0c;仅出现警告&#xff09;。 具体如下&#xff1a; [SteamVR] Not Initialized (109) [SteamVR] Initialization failed…