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登录并爬取淘宝信息代码示例
Dec 09 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
Python处理CSV与List的转换方法
Apr 19 Python
TensorFlow 模型载入方法汇总(小结)
Jun 19 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
Python3.5实现的三级菜单功能示例
Mar 25 Python
python实现扫描局域网指定网段ip的方法
Apr 16 Python
Flask-WTF表单的使用方法
Jul 12 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
python数字类型math库原理解析
Mar 02 Python
Django实现前台上传并显示图片功能
May 29 Python
python某漫画app逆向
Mar 31 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 self,$this,const,static,->的使用
2009/10/22 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
很可爱的输入框
2008/08/03 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
js同源策略详解
2015/05/21 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
八大排序算法的Python实现
2021/01/28 Python
Python Requests库基本用法示例
2018/08/20 Python
Python3非对称加密算法RSA实例详解
2018/12/06 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
python上下文管理的使用场景实例讲解
2021/03/03 Python
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
旅行社各个岗位职责
2014/03/15 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
工厂见习报告范文
2014/10/31 职场文书