python使用Psutil模块实现获取计算机相关信息

 更新时间:2023年11月01日 14:48:02   作者:0思必得0  
psutil 是一个跨平台的库,用于获取进程和系统运行状态的信息,这篇文章主要为大家详细介绍了python如何调用psutil模块实现获取计算机相关信息,有需要的小伙伴可以了解下

psutil 是一个跨平台的库,用于获取进程和系统运行状态(CPU、内存、磁盘、网络、传感器)的信息。它主要用于系统监视、分析和限制进程资源以及管理正在运行的进程。psutil 支持 Linux、Windows、macOS、FreeBSD、OpenBSD、NetBSD 和 Sun Solaris 等操作系统。

psutil 库可以用来获取以下信息:

  • 进程信息:包括进程ID、进程名称、进程状态等。
  • CPU信息:包括CPU数量、CPU使用率、每个CPU的使用率等。
  • 内存信息:包括总内存、已使用内存、空闲内存等。
  • 磁盘信息:包括磁盘使用率、磁盘IO等。
  • 网络信息:包括网络接口、网络连接数等。
  • 传感器信息:包括温度、湿度等信息。

psutil 库可以通过以下方式使用:

  • 获取进程信息:可以使用 psutil.Process(pid) 方法获取指定进程的信息,其中 pid 是进程ID。
  • 获取系统信息:可以使用 psutil.virtual_memory() 和 psutil.cpu_percent(interval=1) 等方法获取系统信息。
  • 监控磁盘信息:可以使用 psutil.disk_usage(‘/’) 方法获取磁盘使用率信息。
  • 监控网络信息:可以使用 psutil.net_io_counters() 方法获取网络IO信息。
  • 管理进程:可以使用 psutil.Process(pid).kill() 方法杀死指定进程。

总之,psutil库是一个非常实用的库,可以用来获取系统和进程的详细信息,并对进程进行管理。

查看操作系统相关信息

import psutil
from datetime import datetime

Users = psutil.users()  # 查看当前登录的用户信息,列表类型。包括:name: 用户名  terminal: 终端  host: 主机地址  started: 登录时间  pid: 进程id
BootTime = datetime.fromtimestamp(psutil.boot_time())  # 查看系统的启动时间 2022-12-12 08:40:05

查看CPU相关信息

import psutil

CpuLogicCoreCount = psutil.cpu_count()  # CPU逻辑核心数 '8'
CpuPhysicalCoreCount = psutil.cpu_count(logical=False)  # CPU物理核心数 '4'
CPUPercent = psutil.cpu_percent(interval=1, percpu=True)  # CPU使用率,列表显示,interval表示刷新间隔,列表中的元素代表每个CPU逻辑核心 [6.1, 1.5, 4.6, 7.7, 10.8, 1.5, 1.5, 1.5]
CPUFreq = psutil.cpu_freq()  # CPU频率 scpufreq(current=3408.0, min=0.0, max=3408.0)

查看内存相关信息

import psutil
VirtualMemory = psutil.virtual_memory()  # 内存使用情况 svmem(total=8480059392, available=1381511168, percent=83.7, used=7098548224, free=1381511168) total: 总内存 available: 可用内存

查看硬盘存储和IO相关信息

import psutil
DiskPartitions = psutil.disk_partitions(all=True)
"""
[sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed'),
 sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed'),
 sdiskpart(device='E:\\', mountpoint='E:\\', fstype='NTFS', opts='rw,fixed')]
# 可以看到一共有三个盘符,fstype表示文件系统格式是NTFS,opts中的rw表示可读写
# 里面有一个参数 all, 默认为 False, 如果指定为 True, 那么返回的内容还会包含 /proc 等特殊文件系统的挂载信息,由于我这里是 Windows, 所以两者没区别
"""
DiskUsage = psutil.disk_usage('C:')  # 磁盘使用情况 sdiskusage(total=84821807104, used=66361847808, free=18459959296, percent=78.2)
DiskIOCounters = psutil.disk_io_counters(perdisk=False)  # 磁盘IO统计信息 sdiskio(read_count=4612339, write_count=1834298, read_bytes=116422007808, write_bytes=61427764224, read_time=12831, write_time=4321)
"""
read_count: 读次数                     write_count: 写次数
read_bytes: 读的字节数                 write_bytes: 写的字节数
read_time: 读时间                      write_time: 写时间
默认返回的是所有磁盘加起来的统计信息,我们可以指定 perdisk=True,则分别列出每一个磁盘的统计信息。
"""

查看网络相关信息

import psutil
NetIOCounters = psutil.net_io_counters(pernic=False)  # 网络 IO 统计信息 snetio(bytes_sent=873520263, bytes_recv=311085337, packets_sent=1091582, packets_recv=1259384, errin=0, errout=0, dropin=0, dropout=0)
"""
# bytes_sent: 发送的字节数
# bytes_recv: 接收的字节数
# packets_sent: 发送的包数据量
# packets_recv: 接收的包数据量
# errin: 接收包时, 出错的次数
# errout: 发送包时, 出错的次数
# dropin: 接收包时, 丢弃的次数
# dropout: 发送包时, 丢弃的次数
里面还有一个 pernic 参数, 如果为 True, 则列出所有网卡的信息
"""
NetIfAddrs = psutil.net_if_addrs()  # 以字典的形式返回网卡的配置信息, 包括 IP 地址、Mac地址、子网掩码、广播地址等等
"""
{'Loopback Pseudo-Interface 1': [snicaddr(family=<AddressFamily.AF_INET: 2>, address='127.0.0.1', netmask='255.0.0.0', broadcast=None, ptp=None),
                         snicaddr(family=<AddressFamily.AF_INET6: 23>, address='::1', netmask=None, broadcast=None, ptp=None)],
 '本地连接': [snicaddr(family=<AddressFamily.AF_LINK: -1>, address='10-E7-C6-2D-AB-2C', netmask=None, broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET: 2>, address='10.36.23.50', netmask='255.255.255.0', broadcast=None, ptp=None),
  snicaddr(family=<AddressFamily.AF_INET6: 23>, address='fe80::d472:4d86:72f6:4da1', netmask=None, broadcast=None, ptp=None)]}
"""
NetIfStats = psutil.net_if_stats()  # 返回网卡的详细信息, 包括是否启动、通信类型、传输速度、mtu
"""
{'Loopback Pseudo-Interface 1': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=1073, mtu=1500),
 '本地连接': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=100, mtu=1500)}
"""
NetConnections = psutil.net_connections(kind='inet')  # 以列表的形式返回每个网络连接的详细信息
"""
[sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip='127.0.0.1', port=57096), raddr=addr(ip='127.0.0.1', port=57095), status='ESTABLISHED', pid=7456),
 sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip='127.0.0.1', port=57230), raddr=addr(ip='127.0.0.1', port=57229), status='ESTABLISHED', pid=20992),
 sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip='127.0.0.1', port=57184), raddr=addr(ip='127.0.0.1', port=57251), status='ESTABLISHED', pid=20992)]
...
里面接受一个参数, 默认是 "inet", 当然我们也可以指定为其它, 比如 "tcp"
"""

到此这篇关于python使用Psutil模块实现获取计算机相关信息的文章就介绍到这了,更多相关python psutil内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python创建自助抢单插件的完整步骤

    使用Python创建自助抢单插件的完整步骤

    文章介绍了如何使用Python编写一个自助抢单插件,该插件可以帮助用户监控特定网站上的商品信息,并在条件满足时自动下单,文章涵盖了从项目概述、技术架构、项目流程到环境准备、网络请求、数据解析、用户界面设计和定时任务的详细步骤
    2024-11-11
  • 浅谈pyqt5在QMainWindow中布局的问题

    浅谈pyqt5在QMainWindow中布局的问题

    今天小编就为大家分享一篇浅谈pyqt5在QMainWindow中布局的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python中查找缺失值的三种方法

    Python中查找缺失值的三种方法

    本文主要介绍了Python中查找缺失值的三种方法,包括pandas库的isnull()方法、numpy库的isnan()方法和scikit-learn库的SimpleImputer类,感兴趣的可以了解一下
    2023-11-11
  • Selenium显式等待配置错误的报错与修复实战指南

    Selenium显式等待配置错误的报错与修复实战指南

    在自动化测试中,等待机制是处理页面元素加载延迟的重要手段,显式等待允许我们在继续执行代码之前等待某个条件发生,这比固定的强制等待更灵活高效,我们经常会遇到Selenium显式等待配置错误,所以本文给大家介绍了修复指南,需要的朋友可以参考下
    2025-07-07
  • Python自动化办公之Excel、Word和PDF操作指南

    Python自动化办公之Excel、Word和PDF操作指南

    在现代办公环境中,我们每天都要处理大量的文档工作,Python作为一门功能强大的编程语言,提供了丰富的库来简化办公文档的处理任务,下面就跟随小编一起学习一下吧
    2025-10-10
  • Pytorch中DataLoader的使用方法详解

    Pytorch中DataLoader的使用方法详解

    在Pytorch中,torch.utils.data中的Dataset与DataLoader是处理数据集的两个函数,用来处理加载数据集,这篇文章主要介绍了Pytorch中DataLoader的使用方法,需要的朋友可以参考下
    2022-09-09
  • Python执行Linux命令的多种方法

    Python执行Linux命令的多种方法

    本文介绍了在Python中执行shell命令(如cd和git)的多种方法,包括使用os和subprocess模块、完整的最佳实践解决方案、高级Git操作封装、最简实现以及错误处理、路径扩展和安全性注意事项,最后,简要介绍了Flutter的开发背景和学习重点,需要的朋友可以参考下
    2025-12-12
  • python全局解释器GIL锁机制详解

    python全局解释器GIL锁机制详解

    我们要知道一点GIL并不是Python的特性,它是Python解释器Cpython引入的一个概念,下面这篇文章主要给大家介绍了关于python全局解释器GIL锁机制的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • 实例探究Python以并发方式编写高性能端口扫描器的方法

    实例探究Python以并发方式编写高性能端口扫描器的方法

    端口扫描器就是向一批端口上发送请求来检测端口是否打开的程序,这里我们以实例探究Python以并发方式编写高性能端口扫描器的方法
    2016-06-06
  • Python实现删除Android工程中的冗余字符串

    Python实现删除Android工程中的冗余字符串

    这篇文章主要介绍了Python实现删除Android工程中的冗余字符串,本文实现的是删除Android资源(语言)国际化机制中的一些冗余字符串,需要的朋友可以参考下
    2015-01-01

最新评论