python psutil模块使用方法解析


Posted in Python onAugust 01, 2019

psutil(进程和系统实用程序)是一个跨平台的库,用于 在Python中检索有关运行进程和系统利用率(CPU,内存,磁盘,网络,传感器)的信息。

它主要用于系统监视,分析和限制流程资源以及运行流程的管理。它实现了UNIX命令行工具提供的许多功能,例如:ps,top,lsof,netstat,ifconfig,who,df,kill,free,nice,ionice,iostat,iotop,uptime,pidof,tty,taskset,pmap。psutil目前支持以下平台:

  • Linux的
  • 视窗
  • OSX,
  • FreeBSD,OpenBSD,NetBSD
  • Sun Solaris
  • AIX

... 32位和64位体系结构,Python版本从2.6到3.6。

1、获取系统性能信息

#! /env python3
#coding=utf-8
import psutil
''''
获取cpu信息
'''
a = psutil.cpu_times() #使用cpu_times方法获取cpu完成信息,需要显示所有的cpu信息
b = psutil.cpu_times().user #获取单项cpu的数据信息,如用户user的cpu时间比
c = psutil.cpu_count() #获取cpu的逻辑个数

print (a)
print (b)
print (c)

'''
内存信息
'''
mem = psutil.virtual_memory()  #使用pstuil.virtual_memory方法获取内存的完整信息
mem_total = psutil.virtual_memory().total #获取内存总数
mem_free = psutil.virtual_memory().free #获取内存剩余
print (mem)
print (mem_total)
print (mem_free)


'''
磁盘信息
'''
disk_partitions = psutil.disk_partitions()  #获取磁盘完整信息
disk_usage = psutil.disk_usage('/')  #获取整个硬盘的信息
disk_usage_c = psutil.disk_usage('C://') #获取分区c的硬盘信息
disk_io = psutil.disk_io_counters() #获取硬盘的总io个数、读写信息
disk_io_perdisk = psutil.disk_io_counters(perdisk=True) #‘perdisk=True'参数获取单个分区IO个数、读写信息
print (disk_partitions)
print (disk_usage)
print (disk_usage_c)
print ('硬盘总io=' +str(disk_io))
print ('单个分区信息='+str(disk_io_perdisk))

'''
网络信息
'''
net_io = psutil.net_io_counters()  #获取网络总IO信息、默认pernic=False
net_io_pernic = psutil.net_io_counters(pernic=True) #获取每个网卡的io信息
net_connections = psutil.net_connections()#获取所有的连接信息
print (net_io)
print (net_io_pernic)
print (net_connections)

'''
其他系统信息
'''
users = psutil.users()   #当前登录系统的用户信息
import datetime
boot_time = psutil.boot_time() #获取开机时间,为linux格式
boot_time_nu = datetime.datetime.fromtimestamp(psutil.boot_time()).strftime('%Y-%m-%d%H:%M:%S') #转换为自然格式
print (users)
print (boot_time)
print (boot_time_nu)

2、系统进程管理

#! /env python3
#coding=utf-8
import psutil
'''
进程信息
'''
pids = psutil.pids() #列出所有进程id
pids_4644= psutil.Process(4644) #列出指定pid为4644的进程信息
print (pids)
print (pids_4644.name())  #输出进程名
print (pids_4644.exe())   #输出进程路径
print (pids_4644.cwd())   #输出绝对路径
print (pids_4644.status()) #输出进程状态
print (pids_4644.create_time()) #输出创建时间、时间戳格式
#print (pids_4644.gid())    #输出进程gid信息
print (pids_4644.cpu_times)   #输出cpu时间信息,包括user,system两个cpu时间
print (pids_4644.cpu_affinity()) #get进程cpu亲和度
print (pids_4644.memory_percent()) #进程利用率
print (pids_4644.memory_info)  #进程内存信息
print (pids_4644.io_counters()) #进程io信息,包括读写IO数及字节数
print (pids_4644.connections())   #返回打开进程sockert的namedutples列表、包括fs,family等信息
print (pids_4644.num_threads())   #进程开启的线程数

'''
popen类的使用
'''
import psutil
from subprocess import PIPE  #通过psutil的popen方法启动的应用程序,可以跟踪该程序的所有相关信息

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

Python 相关文章推荐
python进阶教程之文本文件的读取和写入
Aug 29 Python
跟老齐学Python之有点简约的元组
Sep 24 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
Python3连接MySQL(pymysql)模拟转账实现代码
May 24 Python
Python遍历文件夹 处理json文件的方法
Jan 22 Python
详解Python使用Plotly绘图工具,绘制甘特图
Apr 02 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
Oct 24 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
部署Django到阿里云服务器教程示例
Jun 03 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 Python
python 实现图与图之间的间距调整subplots_adjust
May 21 Python
python读写csv文件并增加行列的实例代码
Aug 01 #Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 #Python
python对csv文件追加写入列的方法
Aug 01 #Python
Django Aggregation聚合使用方法解析
Aug 01 #Python
Flask教程之重定向与错误处理实例分析
Aug 01 #Python
python gdal安装与简单使用
Aug 01 #Python
Django模型修改及数据迁移实现解析
Aug 01 #Python
You might like
PHP开发入门教程之面向对象
2006/12/05 PHP
使用PHP获取网络文件的实现代码
2010/01/01 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
php多用户读写文件冲突的解决办法
2013/11/06 PHP
php中执行系统命令的方法
2015/03/21 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
如何判断微信内置浏览器(通过User Agent实现)
2014/09/01 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
js实现烟花特效
2020/03/02 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
python的Template使用指南
2014/09/11 Python
在Python编程过程中用单元测试法调试代码的介绍
2015/04/02 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
python实现简易数码时钟
2021/02/19 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
城野医生官方海外旗舰店:风靡亚洲毛孔收敛水
2018/04/26 全球购物
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
婚宴父母致辞
2015/07/27 职场文书
婚宴新娘致辞
2015/07/28 职场文书
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript