python psutil 模块概述及使用示例

 更新时间:2024年11月01日 10:18:09   作者:XMYX-0  
psutil是一个跨平台的Python库,用于系统监控、性能分析和进程管理,它提供了丰富的API,可用于获取系统的CPU、内存、磁盘、网络等资源的使用情况,以及进行进程管理,psutil支持Linux、Windows、macOS等主流操作系统

psutil 模块概述

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

支持的系统

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

安装 psutil

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

# 使用 pip 安装
pip install psutil

使用示例

CPU 信息获取

获取 CPU 时间的使用情况:

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

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

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

内存信息获取

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

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() 函数可以查看系统磁盘分区信息及分区使用情况:

# 获取系统分区信息
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 参数获取每个网卡的流量:

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:

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

获取进程详情

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

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

示例脚本:监控系统资源

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

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、内存、磁盘、网络等系统资源的实时信息,同时还能便捷地管理系统进程。

核心功能

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

使用场景

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

主要优点

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

到此这篇关于python psutil 模块概述的文章就介绍到这了,更多相关python psutil 模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python和Scrapy实现抓取网站数据

    使用Python和Scrapy实现抓取网站数据

    Scrapy是一个功能强大的网络爬虫框架,允许开发者轻松地抓取和解析网站内容,这篇文章主要为大家介绍了如何使用Python的Scrapy库进行网站数据抓取,需要的可以参考一下
    2023-05-05
  • python语言中with as的用法使用详解

    python语言中with as的用法使用详解

    本篇文章主要介绍了python语言中with as的用法使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • python实现多层感知器MLP(基于双月数据集)

    python实现多层感知器MLP(基于双月数据集)

    这篇文章主要为大家详细介绍了python实现多层感知器MLP,基于双月数据集,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Python基础之字典常见操作经典实例详解

    Python基础之字典常见操作经典实例详解

    这篇文章主要介绍了Python基础之字典常见操作,结合实例形式详细分析了Python基本功能、创建、内置函数与相关使用技巧,需要的朋友可以参考下
    2020-02-02
  • pycharm社区版安装django并创建一个简单项目的全过程

    pycharm社区版安装django并创建一个简单项目的全过程

    社区版的pycharm跟专业版的pycharm应用差别还是不太大,下面这篇文章主要给大家介绍了关于pycharm社区版安装django并创建一个简单项目的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • Python3合并两个有序数组代码实例

    Python3合并两个有序数组代码实例

    这篇文章主要介绍了Python3合并两个有序数组代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python技巧匿名函数、回调函数和高阶函数

    Python技巧匿名函数、回调函数和高阶函数

    本文分享的是Python技巧匿名函数、回调函数和高阶函数,我们在Python中使用lambda表达式来使用匿名函数,回调函数即callback,先写一个函数,让预先写好的系统来调用,一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数,满足其一则为高阶函数
    2021-12-12
  • Python queue模块攻略全解

    Python queue模块攻略全解

    这篇文章主要为大家介绍了Python queue模块攻略全解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 详解Django中六个常用的自定义装饰器

    详解Django中六个常用的自定义装饰器

    这篇文章主要介绍了详解Django中六个常用的自定义装饰器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Python采集某度贴吧排行榜实战示例

    Python采集某度贴吧排行榜实战示例

    这篇文章主要为大家介绍了Python采集某度贴吧排行榜实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04

最新评论