Python中psutil的介绍与用法


Posted in Python onMay 02, 2019

psutil简介

psutil是一个跨平台库(http://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等操作系统.

如果安装了Anaconda,psutil就可以使用,当然也可使用pip安装,使用前先要导包:

import psutil

主要方法简介

psutil.disk_partitions()返回是一个磁盘分区信息,包括(device, mountpoint, fstype, opts);

psutil.disk_usage()返回磁盘使用情况:

disk = psutil.disk_partitions()
for i in disk:
 print("磁盘:%s 分区格式:%s" % (i.device, i.fstype)) # 盘符 分区格式
 disk_use = psutil.disk_usage(i.device) 

 print("使用了:%.1f GB,空闲:%.1f GB,总共:%.1f GB,使用率%.1f%%," % (
 disk_use.used / 1024 / 1024 / 1024, disk_use.free / 1024 / 1024 / 1024, disk_use.total / 1024 / 1024 / 1024,
 disk_use.percent))

磁盘:C:\   分区格式:NTFS
使用了:34.8 GB,空闲:48.2GB,总共:83.0 GB,使用率41.9%,
磁盘:D:\   分区格式:NTFS
使用了:110.5 GB,空闲:89.2GB,总共:199.7 GB,使用率55.4%,
磁盘:E:\   分区格式:NTFS
使用了:100.1 GB,空闲:95.2GB,总共:195.3 GB,使用率51.3%,
磁盘:F:\   分区格式:NTFS
使用了:120.6 GB,空闲:64.4GB,总共:184.9 GB,使用率65.2%, 

psutil.cpu_percent() cpu的利用率

psutil.virtual_memory()内存情况

memory = psutil.virtual_memory()
# memory.used 使用的
# memory.total 总共
ab = float(memory.used) / float(memory.total) * 100
print("内存使用率为:%.2f%%" % ab)

psutil.net_io_counters() 网络使用情况,可以监控电脑每一个网口的上传,下载等信息;每个电脑由于网口名字不同,返回的信息不太一样。用下面的代码可以先打印出来你电脑的网口信息:

print(psutil.net_io_counters(pernic=True))

你会得到类型下面的信息:

{'以太网': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0), '本地连接* 2': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0), 'VMware Network Adapter VMnet1': snetio(bytes_sent=597, bytes_recv=13, packets_sent=596, packets_recv=13, errin=0, errout=0, dropin=0, dropout=0), 'VMware Network Adapter VMnet8': snetio(bytes_sent=1919, bytes_recv=13, packets_sent=1919, packets_recv=13, errin=0, errout=0, dropin=0, dropout=0), 'WLAN': snetio(bytes_sent=3993804, bytes_recv=76316885, packets_sent=35011, packets_recv=63467, errin=0, errout=0, dropin=0, dropout=0), '蓝牙网络连接': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0), 'Loopback Pseudo-Interface 1': snetio(bytes_sent=0, bytes_recv=0, packets_sent=0, packets_recv=0, errin=0, errout=0, dropin=0, dropout=0), 'Teredo Tunneling Pseudo-Interface': snetio(bytes_sent=13724, bytes_recv=760, packets_sent=102, packets_recv=5, errin=0, errout=0, dropin=0, dropout=0)}

现在你就可以愉快的监控宽带或WLAN的上传和下载速度了,代码如下:

import psutil
import time

def net_state():
 
 recv1 = psutil.net_io_counters(pernic=True)['WLAN'][1] #接收数据
 send1 = psutil.net_io_counters(pernic=True)['WLAN'][0] #上传数据
 time.sleep(1) # 每隔1s监听端口接收数据
 recv2 = psutil.net_io_counters(pernic=True)['WLAN'][1]
 send2 = psutil.net_io_counters(pernic=True)['WLAN'][0]
 # 上传数据
 return 'upload:%.1f kb/s.' % ((send2 - send1) / 1024.0), 'download:%.1f kb/s.' % ((recv2 - recv1) / 1024.0)

while True:
 s1 = net_state()[0]
 s2 = net_state()[1]
 print('当前上传和下载速度为:')
 print(s1)
 print(s2)
 print('---------------------')

如果你不想每次都运行这脚本,可以使用pyinstaller打包,教程可以参考前面的文章。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python中实现从目录中过滤出指定文件类型的文件
Feb 02 Python
python 2.7.14安装图文教程
Apr 08 Python
python XlsxWriter模块创建aexcel表格的实例讲解
May 03 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
May 10 Python
python模块smtplib学习
May 22 Python
python 异或加密字符串的实例
Oct 14 Python
python 文件查找及内容匹配方法
Oct 25 Python
Python闭包思想与用法浅析
Dec 27 Python
python是否适合网页编程详解
Oct 04 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
Python退出时强制运行一段代码的实现方法
Apr 29 Python
Python3.5字符串常用操作实例详解
May 01 #Python
Python3.5文件修改操作实例分析
May 01 #Python
详解pandas的外部数据导入与常用方法
May 01 #Python
Python3.5文件读与写操作经典实例详解
May 01 #Python
Python3.5集合及其常见运算实例详解
May 01 #Python
Django给admin添加Action的步骤详解
May 01 #Python
Django重置migrations文件的方法步骤
May 01 #Python
You might like
坏狼php学习 计数器实例代码
2008/06/15 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
jQuery获取样式中颜色值的方法
2015/01/29 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
python实现360的字符显示界面
2014/02/21 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
Python3之文件读写操作的实例讲解
2018/01/23 Python
Python常见数字运算操作实例小结
2019/03/22 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
业务主管岗位职责
2013/11/20 职场文书
财务管理个人自荐书范文
2013/11/24 职场文书
毕业论文评语大全
2014/04/29 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
房产协议书范本2014
2014/09/30 职场文书
房产分割协议书范文
2014/11/21 职场文书
拾金不昧表扬信
2015/01/16 职场文书
小学感恩节活动总结
2015/03/24 职场文书
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android