Python系统监控模块psutil功能与经典用法分析


Posted in Python onMay 24, 2018

本文实例讲述了Python系统监控模块psutil功能与经典用法。分享给大家供大家参考,具体如下:

1.  psutil模块概述

psutil是一个跨平台库(http://code.google.com/p/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安装

wget https://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz
tar -xzvf psutil-2.0.0.tar.gz
cd psutil-2.0.0
python setup.py install

补充:在Windows平台只需要在命令行界面输入如下命令即可快速安装:

pip install psutil

3. psutil使用

获取系统性能信息(CPU,内存,磁盘,网络等)

① CPU相关

查看cpu信息

import Psutil

查看cpu所有信息

>>> psutil.cpu_times()
scputimes(user=11677.09, nice=57.93, system=148675.58, idle=2167147.79, iowait=260828.48, irq=7876.28, softirq=0.0, steal=3694.59, guest=0.0, guest_nice=0.0)

显示cpu所有逻辑信息

>>> psutil.cpu_times(percpu=True)
[scputimes(user=11684.17, nice=57.93, system=148683.01, idle=2168982.08, iowait=260833.18, irq=7882.35, softirq=0.0, steal=3697.3, guest=0.0, guest_nice=0.0)]

查看用户的cpu时间比

>>> psutil.cpu_times().user
11684.4

查看cpu逻辑个数

>>> psutil.cpu_count()
1

查看cpu物理个数

>>> psutil.cpu_count(logical=False)
1

② 查看系统内存

>>> import psutil
>>> mem = psutil.virtual_memory()
>>> mem
#系统内存的所有信息
svmem(total=1040662528, available=175054848, percent=83.2, used=965718016, free=74944512, active=566755328, inactive=59457536, buffers=9342976, cached=90767360)

系统总计内存

>>> mem.total
1040662528

系统已经使用内存

>>> mem.used
965718016

系统空闲内存

>>> mem.free
112779264

获取swap内存信息

>>> psutil.swap_memory()
sswap(total=0, used=0, free=0, percent=0, sin=0, sout=0)

③ 读取磁盘参数

磁盘利用率使用psutil.disk_usage方法获取,

磁盘IO信息包括read_count(读IO数),write_count(写IO数)

read_bytes(IO写字节数),read_time(磁盘读时间),write_time(磁盘写时间),这些IO信息用

psutil.disk_io_counters()

获取磁盘的完整信息

psutil.disk_partitions()

获取分区表的参数

psutil.disk_usage('/')  #获取/分区的状态

获取硬盘IO总个数

psutil.disk_io_counters()

获取单个分区IO个数

psutil.disk_io_counters(perdisk=True)  #perdisk=True参数获取单个分区IO个数

④ 读取网络信息

网络信息与磁盘IO信息类似,涉及到几个关键点,包括byes_sent(发送字节数),byte_recv=xxx(接受字节数),
pack-ets_sent=xxx(发送字节数),pack-ets_recv=xxx(接收数据包数),这些网络信息用

获取网络总IO信息

psutil.net_io_counters()

输出网络每个接口信息

psutil.net_io_counters(pernic=True) #pernic=True

⑤ 获取当前系统用户登录信息

psutil.users()

⑥ 获取开机时间

psutil.boot_time() #以linux时间格式返回
datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S") #转换成自然时间格式

⑦ 系统进程管理

获取当前系统的进程信息,获取当前程序的运行状态,包括进程的启动时间,查看设置CPU亲和度,内存使用率,IO信息socket连接,线程数等

获取进程信息

查看系统全部进程

psutil.pids()

查看单个进程

p = psutil.Process(2423)
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()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python分割和拼接字符串
Nov 01 Python
Python生成随机验证码的两种方法
Dec 22 Python
Python读取一个目录下所有目录和文件的方法
Jul 15 Python
python框架中flask知识点总结
Aug 17 Python
python生成带有表格的图片实例
Feb 03 Python
python实现H2O中的随机森林算法介绍及其项目实战
Aug 29 Python
python设置随机种子实例讲解
Sep 12 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
Python任务调度模块APScheduler使用
Apr 15 Python
Django:使用filter的pk进行多值查询操作
Jul 15 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
常用的Python代码调试工具总结
Jun 23 Python
详解Django rest_framework实现RESTful API
May 24 #Python
matplotlib.pyplot画图 图片的二进制流的获取方法
May 24 #Python
matplotlib 输出保存指定尺寸的图片方法
May 24 #Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 #Python
在Django中输出matplotlib生成的图片方法
May 24 #Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 #Python
Python获取系统所有进程PID及进程名称的方法示例
May 24 #Python
You might like
PHP file_exists问题杂谈
2012/05/07 PHP
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
玩转方法:call和apply
2014/05/08 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
js实现select选择框效果及美化
2016/08/19 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
在python 中实现运行多条shell命令
2019/01/07 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
二年级语文教学反思
2014/02/02 职场文书
服装创业计划书范文
2014/02/05 职场文书
安全责任书范本
2014/04/15 职场文书
拓展策划方案
2014/06/03 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
体育个人工作总结
2015/02/09 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
消费者理赔投诉书
2015/07/02 职场文书
创业计划书之花店
2019/09/20 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python