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文件读写并使用mysql批量插入示例分享(python操作mysql)
Feb 17 Python
Python3中的2to3转换工具使用示例
Jun 12 Python
Python实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
Python3.5集合及其常见运算实例详解
May 01 Python
python 在某.py文件中调用其他.py内的函数的方法
Jun 25 Python
python实现图片二值化及灰度处理方式
Dec 07 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
Feb 01 Python
django注册用邮箱发送验证码的实现
Apr 18 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 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新手上路(九)
2006/10/09 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
PHP XML和数组互相转换详解
2016/10/26 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
jquery表单验证使用插件formValidator
2012/11/10 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
Python中变量交换的例子
2014/08/25 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python实现的读写json文件功能示例
2018/06/05 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
对Python函数设计规范详解
2019/07/19 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
体育教育专业毕业生自荐信
2013/11/15 职场文书
往来会计岗位职责
2013/12/19 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
2015年政教主任工作总结
2015/07/23 职场文书