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中 ? : 三元表达式的使用介绍
Oct 09 Python
解决python写的windows服务不能启动的问题
Apr 15 Python
python 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
python 网络爬虫初级实现代码
Feb 27 Python
python 实现tar文件压缩解压的实例详解
Aug 20 Python
Python使用当前时间、随机数产生一个唯一数字的方法
Sep 18 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
Python中sorted()排序与字母大小写的问题
Jan 14 Python
Python虚拟环境venv用法详解
May 25 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
Jun 23 Python
基于python实现复制文件并重命名
Sep 16 Python
浅析Python OpenCV三种滤镜效果
Apr 11 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
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
如何在PHP中生成随机数
2020/06/04 PHP
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
vc6编写python扩展的方法分享
2014/01/17 Python
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
Python3实现转换Image图片格式
2018/06/21 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
美国糖果店:Sugarfina
2019/02/21 全球购物
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
若干个Java基础面试题
2015/05/19 面试题
三八妇女节活动主持词
2014/03/17 职场文书
不错的求职信范文
2014/07/20 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
网络销售员岗位职责
2015/04/11 职场文书
国博复兴之路观后感
2015/06/02 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
2016党校培训心得体会
2016/01/07 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers