python psutil 模块概述

news/2024/11/1 2:28:31/

文章目录

  • psutil 模块概述
    • 支持的系统
    • 安装 psutil
  • 使用示例
    • CPU 信息获取
    • 内存信息获取
    • 磁盘信息获取
    • 网络信息获取
  • 进程管理功能
    • 查看系统进程
    • 获取进程详情
    • 示例脚本:监控系统资源
  • 总结
    • 核心功能
    • 使用场景
    • 主要优点


psutil 模块概述

psutil 是一个强大的跨平台 Python 库,主要用于系统监控、性能分析和进程管理。它提供了类似 pstoplsof 等命令的功能,支持获取 CPU、内存、磁盘、网络等系统资源的使用情况。

支持的系统

psutil 支持大多数操作系统,包括 Linux、Windows、macOS、FreeBSD 和 Solaris 等,可以获取系统运行信息,如 CPU 使用率、内存状态、磁盘读写数据、网络吞吐量等。

安装 psutil

使用以下命令可以在任何系统中安装 psutil

# 使用 pip 安装
pip install psutil

使用示例

CPU 信息获取

获取 CPU 时间的使用情况:

python">import psutil# 获取详细的 CPU 时间信息
cpu_times = psutil.cpu_times()
print("用户模式时间:", cpu_times.user)
print("系统模式时间:", cpu_times.system)

计算 CPU 使用率(可以指定间隔时间):

python">cpu_percent = psutil.cpu_percent(interval=1)
print(f"当前 CPU 使用率:{cpu_percent}%")

内存信息获取

可以通过 virtual_memory() 方法来获取内存的总量、可用量及占用率。

python">mem = psutil.virtual_memory()
print(f"总内存:{mem.total / (1024 ** 3):.2f} GB")
print(f"已用内存:{mem.used / (1024 ** 3):.2f} GB")
print(f"剩余内存:{mem.available / (1024 ** 3):.2f} GB")
print(f"内存使用率:{mem.percent}%")

磁盘信息获取

disk_partitions()disk_usage() 函数可以查看系统磁盘分区信息及分区使用情况:

python"># 获取系统分区信息
partitions = psutil.disk_partitions()
for partition in partitions:usage = psutil.disk_usage(partition.mountpoint)print(f"分区:{partition.device}")print(f"总容量:{usage.total / (1024 ** 3):.2f} GB")print(f"已用容量:{usage.used / (1024 ** 3):.2f} GB")print(f"剩余容量:{usage.free / (1024 ** 3):.2f} GB")print(f"使用率:{usage.percent}%")

网络信息获取

net_io_counters() 方法可获取系统网络的总流量,可以加上 pernic=True 参数获取每个网卡的流量:

python">net_io = psutil.net_io_counters()
print(f"发送数据:{net_io.bytes_sent / (1024 ** 2):.2f} MB")
print(f"接收数据:{net_io.bytes_recv / (1024 ** 2):.2f} MB")

进程管理功能

psutil 提供了全面的进程管理功能,可以查看系统中所有进程 ID,获取进程的相关信息,并控制进程的状态。

查看系统进程

获取系统所有进程 ID:

python">pids = psutil.pids()
print("系统中所有的进程 ID:", pids)

获取进程详情

以某个特定进程 ID(如 1234)为例,查看进程的详细信息:

python">pid = 1234
process = psutil.Process(pid)
print("进程名称:", process.name())
print("进程状态:", process.status())
print("进程使用的内存:", process.memory_info().rss / (1024 ** 2), "MB")

示例脚本:监控系统资源

以下是一个完整的脚本示例,用于获取系统硬件信息,如 CPU 使用率、内存和磁盘情况:

python">import psutil
import datetime# 获取系统启动时间
boot_time = datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")
print("系统启动时间:", boot_time)# CPU 使用率
print(f"CPU 使用率:{psutil.cpu_percent(interval=1)}%")# 内存信息
mem = psutil.virtual_memory()
print(f"内存总量:{mem.total / (1024 ** 3):.2f} GB")
print(f"已用内存:{mem.used / (1024 ** 3):.2f} GB")
print(f"剩余内存:{mem.available / (1024 ** 3):.2f} GB")# 磁盘使用信息
disk_usage = psutil.disk_usage('/')
print(f"磁盘总量:{disk_usage.total / (1024 ** 3):.2f} GB")
print(f"磁盘已用:{disk_usage.used / (1024 ** 3):.2f} GB")
print(f"磁盘剩余:{disk_usage.free / (1024 ** 3):.2f} GB")

以下是 psutil 模块的总结:


总结

psutil 模块是一个强大且易于使用的 Python 库,专为系统监控、资源管理和进程控制设计。通过它可以跨平台地获取 CPU、内存、磁盘、网络等系统资源的实时信息,同时还能便捷地管理系统进程。

核心功能

  1. CPU 管理:获取 CPU 使用率、核心数、时间等信息。
  2. 内存管理:查看系统内存的总量、可用量及使用情况。
  3. 磁盘管理:查看磁盘分区、使用率及 I/O 情况。
  4. 网络管理:获取网络的发送、接收数据总量和连接信息。
  5. 进程管理:支持列出系统进程,获取进程状态、资源使用情况等。

使用场景

psutil 广泛应用于性能监控、系统日志记录、数据分析工具、自动化运维等场景。它不仅帮助用户快速搭建监控脚本,还能用于调试和系统诊断,是开发者和运维人员的重要工具。

主要优点

  • 跨平台支持,兼容主流操作系统。
  • API 丰富,支持几乎所有系统资源的获取。
  • 简单易用,函数调用直观,文档完善。

http://www.ppmy.cn/news/1543465.html

相关文章

无人机之集群控制方法篇

无人机的集群控制方法涉及多个技术和策略,以确保多架无人机能够协同、高效地执行任务。以下是一些主要的无人机集群控制方法: 一、编队控制方法 领航-跟随法(Leader-Follower) 通过设定一架无人机作为领航者(长机&am…

java.sql.SQLException: ORA-00971: 缺失 SET 关键字

目录 背景: 过程: 错误原因: 解决办法: 总结: 背景: 正在运行某个项目程序,提交信息之后发现库中并没有刚刚的相关数据,后来查看后台信息,发现提示错误,java.sql.SQLException…

ReactNative 启动应用(2)

ReactNative 启动应用 简述 本节我们来看一下ReactNative在Android上启动Activity的流程,ReactNative在Android上也是一个Apk,它的实现全部都在应用层,所以它肯定也是符合我们Android应用的启动流程的,UI页面的载体也是一个Acti…

appium文本输入的多种形式

目录 一、send_keys方法 二、press_keycode方法 三、subprocess方法直接通过adb命令输入 一、send_keys方法 这个是最常用的方法,不过通常使用时要使用聚焦,也就是先点击后等待: element wait.until(EC.presence_of_element_located((By…

Redis 淘汰策略 问题

前言 相关系列 《Redis & 目录》《Redis & 淘汰策略 & 源码》《Redis & 淘汰策略 & 总结》《Redis & 淘汰策略 & 问题》 参考文献 《Redis过期策略和淘汰策略》 在内存耗尽的情况访问Redis会发生什么? 如果是读指令会正常返回…

初识字节码文件--Java

1,问题:请问以下代码,每行创建了几个对象? public static void main(String[] args) {String a "你好";String b new String("你好");String c "你" "好";} 如何查看字节码 方法一…

Python中的`update`方法详解及示例

Python中的update方法详解及示例 1. update方法简介2. update方法的应用场景3. 代码示例示例代码代码解释运行结果 4. 总结 在Python编程中,update方法是一个非常实用的工具,尤其是在处理集合(Set)数据类型时。本文将详细介绍upda…

数据库的三范式是什么?

数据库的三范式(3NF)是数据库规范化过程中的三个不同层次,旨在减少数据冗余和提高数据完整性。以下是三个范式的详细说明: 1. **第一范式(1NF)**: - **原子性**:确保数据库表的每…