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 文件和路径操作函数小结
Nov 23 Python
python实现系统状态监测和故障转移实例方法
Nov 18 Python
python生成指定长度的随机数密码
Jan 23 Python
Python获取当前页面内所有链接的四种方法对比分析
Aug 19 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
值得收藏的10道python 面试题
Apr 15 Python
python中property和setter装饰器用法
Dec 19 Python
Python实现爬取并分析电商评论
Jun 19 Python
python多线程和多进程关系详解
Dec 14 Python
Python Django框架介绍之模板标签及模板的继承
May 27 Python
Python中可变和不可变对象的深入讲解
Aug 02 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横向重复区域显示二法
2008/09/25 PHP
PHP UTF8编码内的繁简转换类
2009/07/20 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
jquery中获取select选中值的代码
2011/06/27 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
js实现继承的5种方式
2015/12/01 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
取numpy数组的某几行某几列方法
2018/04/03 Python
python selenium 弹出框处理的实现
2019/02/26 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
python实现名片管理器的示例代码
2019/12/17 Python
如何基于python测量代码运行时间
2019/12/25 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
帕克纽约:PARKER NY
2018/12/09 全球购物
大学新生军训个人的自我评价
2013/10/03 职场文书
网络教育自我鉴定
2014/02/04 职场文书
自荐信格式模板
2015/03/27 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
基于python制作简易版学生信息管理系统
2021/04/20 Python
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android