Python运维开发之psutil库的使用详解


Posted in Python onOctober 18, 2018

介绍

psutil能够轻松实现获取系统运行的进程和系统利用率。

导入模块

import psutils

获取系统性能信息

CPU信息

使用cpu_times()方法获取CPU的完整信息:

>>> psutil.cpu_times()

获取单项数据,例如用户user的CPU时间比:

>>> psutil.cpu_times().user

获取CPU的个数:

>>> psutil.cpu_count() # 默认logical=True,获取逻辑个数
>>> psutil.cpu_count(logical=False) # 获取CPU的物理个数

内存信息

获取物理内存总大小和已使用内存:

>>> mem = psutil.virtual_memory()
>>> mem   # 显示所有的参数
>>> mem.total # 总内存
>>> mem.used  # 已使用内存
>>> mem.free  # 获取空闲内存数 
>>> psutil.swap_memory() # 获取SWAP分区信息

磁盘信息

获取磁盘完整信息:

>>> psutil.disk_partitions()

获取分区的使用情况:

>>> psutil.disk_usage('C:/') # 里面参数为所在磁盘分区

获取硬盘总的IO个数:

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

网络信息

获取网络总的IO信息:

>>> psutil.net_io_counters()
>>> psutil.net_io_counters(pernic=True) # 输出单个网络接口的IO信息

其他系统信息

返回当前登录系统的用户信息:

>>> psutil.users()

获取开机时间:

>>> psutil.boot_time() # 以Linux时间戳格式返回
# 如果想要转换成自然时间格式:
>>> datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")

进程管理

进程信息

列出所有进程PID

>>> psutil.pids()

实例化进程对象

>>> p = psutil.Process(716)
>>> p.name() # 进程名
>>> p.exe() # 进程bin路径
>>> p.cwd() # 进程工作目录的绝对路径
>>> p.status() # 进程状态
>>> p.create_time() # 进程创建时间
>>> p.uids() # 进程uid信息
>>> p.gids() # 进程gid信息
>>> p.cpu_times() # 进程CPU时间信息
>>> p.cpu_affinity() # get进程的亲和度
>>> p.memory_percent() # 进程内存使用率
>>> p.num_threads() # 进程开启的线程数

popen类的使用

popen类可以获取用户启动的应用程序进程信息。

>>> p = putil.Popen(["/usr/bin/python","-c","print('Hello')"],stdout=subprocess.PIPE)
>>> p.name()
>>> p.username() # 创建进程的用户
>>> p.communicate()
('hello\n',None)
>>> p.cpu_times() # 得到进程运行的CPU时间

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python自动zip压缩目录的方法
Jun 28 Python
举例讲解Python中的list列表数据结构用法
Mar 12 Python
Python 中Pickle库的使用详解
Feb 24 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
python爬虫获取新浪新闻教学
Dec 23 Python
numpy.random模块用法总结
May 27 Python
Python实现代码统计工具
Sep 19 Python
Python实现猜年龄游戏代码实例
Mar 25 Python
Python的历史与优缺点整理
May 26 Python
Python执行时间的几种计算方法
Jul 31 Python
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
Aug 30 Python
python实现自动登录后台管理系统
Oct 18 #Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 #Python
python实现简单登陆系统
Oct 18 #Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 #Python
python字典值排序并取出前n个key值的方法
Oct 17 #Python
Python中创建二维数组
Oct 17 #Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 #Python
You might like
关于PHP5 Session生命周期介绍
2010/03/02 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
PHP利用imagick生成组合缩略图
2016/02/19 PHP
基于laravel制作APP接口(API)
2016/03/15 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
最简单的js图片切换效果实现代码
2011/09/24 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
Node调用Java的示例代码
2017/09/20 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
Python基础入门之seed()方法的使用
2015/05/15 Python
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
Tornado 多进程实现分析详解
2018/01/12 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
python实现决策树分类
2018/08/30 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
Python类继承和多态原理解析
2020/02/05 Python
css3 伪元素和伪类选择器详解
2014/09/04 HTML / CSS
2015年行政人事部工作总结
2015/05/13 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js
Python中22个万用公式的小结
2021/07/21 Python
python Tkinter模块使用方法详解
2022/04/07 Python