当前位置:

首页 > 编程开发 > Python的psutil模块怎么使用

Python的psutil模块怎么使用

一、psutil模块:1.psutil介绍psutil是一个跨平台库(//pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来做系统监控,性能分析,进程管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。目前支持32位和64位

本文目录

      一、psutil模块:

      1.psutil介绍

      psutil是一个跨平台库(//pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来做系统监控,性能分析,进程管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。目前支持32位和64位的Linux、Windows、OS X、FreeBSD和Sun Solaris等操作系统.

      2.安装psutil模块:

      CentOS安装psutil包:
      python版本:3.5
      wget https://pypi.python.org/packages/source/p/psutil/psutil-3.2.1.tar.gz --no-check-certificate
      tar zxvf psutil-3.2.1.tar.gz
      cd psutil-3.2.1
      python setup.py install
      Windos安装psutil包:
      D:\python35\Scripts>pip3.exe install psutil
      Collecting psutil
        Downloading psutil-5.3.1-cp35-cp35m-win_amd64.whl (215kB)
          100% |████████████████████████████████| 225kB 84kB/s
      Installing collected packages: psutil
      Successfully installed psutil-5.3.1

       二、.获取系统基本信息的使用:

      1.CPU信息

      使用cpu_times方法获取cpu的完整信息,如下所示。

      >>> psutil.cpu_times()
      scputimes(user=650613.02, nice=22.14, system=154916.5, idle=16702285.26, iowait=68894.55, irq=3.38, softirq=7075.65, steal=0.0, guest=0.0)
      >>>

      获取单个数据,如用户的cpu时或io等待时间,如下所示:

      >>> psutil.cpu_times().user
      650617.11
      >>> psutil.cpu_times().iowait
      68894.63
      >>>

       获取cpu逻辑和物理个数,默认logical值为True 。

      #CPU逻辑个数
      >>> psutil.cpu_count()
      2
      #CPU物理个数
      >>> psutil.cpu_count(logical=False)
      1
      >>>

      获取cpu的使用率:

      >>> psutil.cpu_percent()
      2.5
      >>> psutil.cpu_percent(1)
      2.5
      >>>

      2.内存信息

      内存信息的获取主要使用virtual_memory方法。swap使用就用swap_memory方法。

      >>> mem = psutil.virtual_memory()
      >>> mem
      svmem(total=4018601984, available=1066205184, percent=73.5, used=3904004096, free=114597888, active=3302174720, inactive=426078208, buffers=156520448, cached=795086848)
      >>> mem.total
      4018601984
      >>> mem.used
      3904004096
      >>> mem.free
      114597888
      >>> print(mem.total/1024/1024)
      3832.4375
      >>>

      其中percent表示实际已经使用的内存占比,即(1047543808-717537280)/1047543808*100% 。available表示还可以使用的内存。

       3.磁盘信息

      磁盘信息主要有两部分,一个是磁盘的利用率,一个是io,他们分别可以通过disk_usage和disk_io_counters方法获取。

      如下先获取分区信息,然后看下根分区的使用情况:

      >>> psutil.disk_partitions()
      [sdiskpart(device='/dev/mapper/root', mountpoint='/', fstype='ext4', opts='rw,errors=remount-ro'), sdiskpart(device='/dev/sda1', mountpoint='/boot', fstype='ext2', opts='rw')]
      >>> psutil.disk_usage('/')
      sdiskusage(total=42273669120, used=17241096192, free=22885195776, percent=40.8)
      >>>

      默认disk_io_counters方法获取的是硬盘总的io数和读写信息,如果需要获取单个分区的io和读写信息加上"perdisk=True"参数。

      >>> psutil.disk_io_counters()
      sdiskio(read_count=638190, write_count=77080153, read_bytes=16037795840, write_bytes=1628871606272, read_time=2307367, write_time=1777841305)
      >>> psutil.disk_io_counters(perdisk=True)
      {'vdb1': sdiskio(read_count=312, write_count=0, read_bytes=1238016, write_bytes=0, read_time=95, write_time=0), 'vda1': sdiskio(read_count=637878, write_count=77080257, read_bytes=16036557824, write_bytes=1628873314304, read_time=2307272, write_time=1777841879)}
      >>>

      4.网络信息:

       网络io和磁盘io使用方法差不多,主要使用net_io_counters方法,如果需要获取单个网卡的io信息,加上pernic=True参数。

      #获取网络总的io情况
      >>> 
      >>> psutil.net_io_counters()
      snetio(bytes_sent=525490132009, bytes_recv=409145642892, packets_sent=948527563, packets_recv=778182181, errin=0, errout=0, dropin=0, dropout=0)
      #获取网卡的io情况
      >>> 
      >>> psutil.net_io_counters(pernic=True)
      {'lo': snetio(bytes_sent=56524704027, bytes_recv=56524704027, packets_sent=33602236, packets_recv=33602236, errin=0, errout=0, dropin=0, dropout=0), 'eth0': snetio(bytes_sent=468966480940, bytes_recv=352622081327, packets_sent=914930488, packets_recv=744583332, errin=0, errout=0, dropin=0, dropout=0)}
      >>>

      5.其他系统信息:

      1.获取开机时间
      ##以linux时间格式返回,可以使用时间戳转换
      >>> psutil.boot_time()    
      1496647567.0
      #转换成自然时间格式
      >>> psutil.boot_time()
      1496647567.0
      >>> datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S")
      '2017-06-05 15: 26: 07'
      >>>
      2.查看系统全部进程
      >>> psutil.pids()
      [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 60, 61, 63, 64, 65, 97, 98, 279, 280, 331, 398, 481, 676, 693, 769, 845, 848, 1023, 1085, 1108, 1355, 1366, 1457, 1474, 1475, 1494, 1541, 1543, 1545, 1546, 1548, 1550, 1552, 2829, 12436, 12913, 13129, 16022, 16029, 16030, 16031, 16032, 16033, 16518, 16520, 17088, 17124, 19203, 25382, 32679]
      3.查看单个进程
      p = psutil.Process(16031)
      p.name()      #进程名
      p.exe()         #进程的bin路径
      p.cwd()        #进程的工作目录绝对路径
      p.status()     #进程状态
      p.create_time()  #进程创建时间
      p.uids()      #进程uid信息
      p.gids()      #进程的gid信息
      p.cpu_times()    #进程的cpu时间信息,包括user,system两个cpu信息
      p.cpu_affinity()  #get进程cpu亲和度,如果要设置cpu亲和度,将cpu号作为参考就好
      p.memory_percent()  #进程内存利用率
      p.memory_info()    #进程内存rss,vms信息
      p.io_counters()    #进程的IO信息,包括读写IO数字及参数
      p.connectios()    #返回进程列表
      p.num_threads()  #进程开启的线程数
      听过psutil的Popen方法启动应用程序,可以跟踪程序的相关信息
      from subprocess import PIPE
      p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"],stdout=PIPE)
      p.name()
      p.username()

       查看系统硬件脚本:

       硬件信息脚本

      1 #!/usr/bin/env python
       2 #coding:utf-8
       3 
       4 import psutil
       5 import datetime
       6 import time
       7 
       8 # 当前时间
       9 now_time = time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time()))
      10 print(now_time)
      11 
      12 # 查看cpu物理个数的信息
      13 print(u"物理CPU个数: %s" % psutil.cpu_count(logical=False))
      14 
      15 #CPU的使用率
      16 cpu = (str(psutil.cpu_percent(1))) + '%'
      17 print(u"cup使用率: %s" % cpu)
      18 
      19 #查看内存信息,剩余内存.free  总共.total
      20 #round()函数方法为返回浮点数x的四舍五入值。
      21 
      22 free = str(round(psutil.virtual_memory().free / (1024.0 * 1024.0 * 1024.0), 2))
      23 total = str(round(psutil.virtual_memory().total / (1024.0 * 1024.0 * 1024.0), 2))
      24 memory = int(psutil.virtual_memory().total - psutil.virtual_memory().free) / float(psutil.virtual_memory().total)
      25 print(u"物理内存: %s G" % total)
      26 print(u"剩余物理内存: %s G" % free)
      27 print(u"物理内存使用率: %s %%" % int(memory * 100))
      28 # 系统启动时间
      29 print(u"系统启动时间: %s" % datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S"))
      30 
      31 # 系统用户
      32 users_count = len(psutil.users())
      33 #
      34 # >>> for u in psutil.users():
      35 # ...   print(u)
      36 # ...
      37 # suser(name='root', terminal='pts/0', host='61.135.18.162', started=1505483904.0)
      38 # suser(name='root', terminal='pts/5', host='61.135.18.162', started=1505469056.0)
      39 # >>> u.name
      40 # 'root'
      41 # >>> u.terminal
      42 # 'pts/5'
      43 # >>> u.host
      44 # '61.135.18.162'
      45 # >>> u.started
      46 # 1505469056.0
      47 # >>>
      48 
      49 users_list = ",".join([u.name for u in psutil.users()])
      50 print(u"当前有%s个用户,分别是 %s" % (users_count, users_list))
      51 
      52 #网卡,可以得到网卡属性,连接数,当前流量等信息
      53 net = psutil.net_io_counters()
      54 bytes_sent = '{0:.2f} Mb'.format(net.bytes_recv / 1024 / 1024)
      55 bytes_rcvd = '{0:.2f} Mb'.format(net.bytes_sent / 1024 / 1024)
      56 print(u"网卡接收流量 %s 网卡发送流量 %s" % (bytes_rcvd, bytes_sent))
      57 
      58 io = psutil.disk_partitions()
      59 # print(io)
      60 # print("io[-1]为",io[-1])
      61 #del io[-1]
      62 
      63 print('-----------------------------磁盘信息---------------------------------------')
      64 
      65 print("系统磁盘信息:" + str(io))
      66 
      67 for i in io:
      68     o = psutil.disk_usage(i.device)
      69     print("总容量:" + str(int(o.total / (1024.0 * 1024.0 * 1024.0))) + "G")
      70     print("已用容量:" + str(int(o.used / (1024.0 * 1024.0 * 1024.0))) + "G")
      71     print("可用容量:" + str(int(o.free / (1024.0 * 1024.0 * 1024.0))) + "G")
      72 
      73 print('-----------------------------进程信息-------------------------------------')
      74 # 查看系统全部进程
      75 for pnum in psutil.pids():
      76     p = psutil.Process(pnum)
      77     print(u"进程名 %-20s  内存利用率 %-18s 进程状态 %-10s 创建时间 %-10s " \
      78     % (p.name(), p.memory_percent(), p.status(), p.create_time()))
      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
      作者最新文章
      编程开发 Python
      相关文章 更多
      python删除一个列表里的重复元素的方法与代码示例
      python删除一个列表里的重复元素的方法与代码示例

      学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

      Python写接口的步骤及完整代码示例
      Python写接口的步骤及完整代码示例

      详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

      codex怎么读取word文档及docx文件操作教程
      codex怎么读取word文档及docx文件操作教程

      介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

      怎么在Python中调用C语言代码提升性能
      怎么在Python中调用C语言代码提升性能

      详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

      Python与C语言的性能差异及底层原理
      Python与C语言的性能差异及底层原理

      深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

      Python和C语言哪个更适合编程入门
      Python和C语言哪个更适合编程入门

      客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

      selenium上传文件教程本地文件路径设置方法
      selenium上传文件教程本地文件路径设置方法

      深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

      大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
      大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

      针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

      langgraph python guide中文入门教程详解
      langgraph python guide中文入门教程详解

      本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

      Windows 安装 Python:从官方入口到虚拟环境的可复现实践
      Windows 安装 Python:从官方入口到虚拟环境的可复现实践

      面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

      查看更多
      精品专题 更多
      装机必备
      装机必备

      正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

      Windows
      Windows

      正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

      PDF教程
      PDF教程

      正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

      Mac软件 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      Aperty macOS版
      Aperty macOS版
      macOS

      Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

      WINDOWS 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      PixTV 网页版
      PixTV 网页版
      Windows

      PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。