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进行一些简单的自然语言处理的教程
Mar 31 Python
部署Python的框架下的web app的详细教程
Apr 30 Python
python如何使用unittest测试接口
Apr 04 Python
Python生成短uuid的方法实例详解
May 29 Python
Python中垃圾回收和del语句详解
Nov 15 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
Sep 04 Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 Python
Python 远程开关机的方法
Nov 18 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 Python
详解Python模块化编程与装饰器
Jan 16 Python
python常量折叠基础知识点讲解
Feb 28 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
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
中英文字符串翻转函数
2008/12/09 PHP
php 归并排序 数组交集
2011/05/10 PHP
解析PHP 使用curl提交json格式数据
2013/06/29 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
详解webpack+express多页站点开发
2017/12/22 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
怎样自定义一个异常类
2016/09/27 面试题
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
商场端午节活动方案
2014/01/29 职场文书
企业趣味活动方案
2014/08/21 职场文书
经济纠纷起诉状
2015/05/20 职场文书
毕业生登记表班级意见
2015/06/05 职场文书
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android