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 lxml模块安装教程
Jun 02 Python
将Emacs打造成强大的Python代码编辑工具
Nov 20 Python
用pickle存储Python的原生对象方法
Apr 28 Python
Python使用pymysql小技巧
Jun 04 Python
Python md5与sha1加密算法用法分析
Jul 14 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
实例讲解python中的序列化知识点
Oct 08 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
Feb 28 Python
Python实现的远程文件自动打包并下载功能示例
Jul 12 Python
使用 Django Highcharts 实现数据可视化过程解析
Jul 31 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 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
全国FM电台频率大全 - 15 山东省
2020/03/11 无线电
php 代码优化之经典示例
2011/03/24 PHP
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
vue+eslint+vscode配置教程
2019/08/09 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
Python 基础教程之包和类的用法
2017/02/23 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
优秀实习生感言
2014/03/01 职场文书
家长写给老师的建议书
2014/03/13 职场文书
实习公司领导推荐函
2014/05/21 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
观后感格式
2015/06/19 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python