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连接mysql驱动有关问题(windows版本)
Apr 23 Python
利用python生成一个导出数据库的bat脚本文件的方法
Dec 30 Python
python一键升级所有pip package的方法
Jan 16 Python
基于python内置函数与匿名函数详解
Jan 09 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
python框架中flask知识点总结
Aug 17 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
OpenCV+face++实现实时人脸识别解锁功能
Aug 28 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
详解如何修改python中字典的键和值
Sep 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中进行身份认证
2006/10/09 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
dwr spring的集成实现代码
2009/03/22 Javascript
Jquery 绑定时间实现代码
2011/05/03 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
对mac下nodejs 更新到最新版本的最新方法(推荐)
2018/05/17 NodeJs
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
Python sys.argv用法实例
2015/05/28 Python
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
如何基于线程池提升request模块效率
2020/04/18 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
python绘图模块之利用turtle画图
2021/02/12 Python
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
数字漫画:comiXology
2020/06/13 全球购物
方正Java笔试题
2014/07/03 面试题
珍珠奶茶店创业计划书
2014/01/11 职场文书
关于毕业的中学校园广播稿
2014/01/26 职场文书
数学检讨书1000字
2014/02/24 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python