如何在Python中妥善使用进度条详解


Posted in Python onApril 05, 2022

1 简介

在日常运行程序的过程中常常涉及到循环迭代过程,对于执行时间很短的程序来说倒无所谓,但对于运行过程有明显耗时的涉及循环迭代的程序,为其加上进度条(progress bar),是帮助我们监测代码执行进度以及处理中间异常错误非常实用的技巧。

本文就将为大家介绍Python中非常实用又风格迥异的两个进度条相关库——tqdm与alive-progress的主要用法。

2 tqdm常用方法

tqdm是Python中所有进度条相关库中最出名的,既然是最出名的,自然有它独到之处。

tqdm不仅可以生成基础的可在终端中显示的进度条,还可以配合jupyter notebook和jupyter lab生成更加美观的网页交互部件形式的进度条,更是和pandas强强联手,为pandas中的一些操作提供专有的进度条功能。

下面我们来对tqdm的主要功能进行介绍。

2.1 基础用法

因为是第三方库,首先需要利用pip install tqdm或 conda install -c conda-forge tqdm对其进行安装,安装完成后先来看看它最基本的用法:

如何在Python中妥善使用进度条详解

利用tqdm.tqdm,将for循环过程中进行迭代的对象简单包裹,就实现了为循环过程添加进度条以及打印执行速度、已运行时间与预估剩余运行时间等实用信息的功能,同样也可用于列表推导:

如何在Python中妥善使用进度条详解

而针对迭代对象是range()的情况,tqdm还提供了简化版的trange()来代替tqdm(range())

如何在Python中妥善使用进度条详解

其附带的参数desc还可以帮助我们设置进度条的说明文字:

如何在Python中妥善使用进度条详解

而如果想要在迭代过程中变更说明文字,还可以预先实例化进度条对象,在需要刷新说明文字的时候执行相应的程序:

如何在Python中妥善使用进度条详解

但当迭代的对象长度一开始未知时,譬如对pandas中的DataFrame.itertuples()进行迭代,我们就只能对其执行速度等信息进行估计,但无法看到进度条递增情况,因为tqdm不清楚迭代的终点如何:

如何在Python中妥善使用进度条详解

2.2 配合jupyter notebook/jupyter lab的美观进度条

tqdm对jupyter notebook和jupyter lab有着特殊的支持,且使用方法非常简单,只需要将原有的from tqdm import XXX的相应功能导入格式修改为from tqdm.notebook import XXX就可以了,以trange为例:

如何在Python中妥善使用进度条详解

2.3 配合pandas中的apply

tqdm对pandas中的apply()过程提供了特殊的支持,因为pandas中的apply()本质上就是串行循环运算,你可以将pandas中的任何apply操作替换为progress_apply,并且记住每个单独的progress_apply前要先执行tqdm.pandas(),就像下面的例子一样:

如何在Python中妥善使用进度条详解

3 alive-progress常用方法

虽然与tqdm一样都是为了给循环过程加上进度条而诞生的库,但alive-progress相比tqdm增加了更多花样繁多的动态效果,我们通过调用其专门提供的showtime()函数可以查看所有可用的动态进度条样式:

如何在Python中妥善使用进度条详解

同样类似地可以查看所有进度条样式:

如何在Python中妥善使用进度条详解

使用起来也是非常简单,但与tqdm用法区别很大,需要配合with关键词,譬如下面我们使用到alive_progress中的alive_bar来生成动态进度条:

如何在Python中妥善使用进度条详解

通过修改bar参数来改变进度条的样式:

如何在Python中妥善使用进度条详解

更多关于alive-progress的内容感兴趣的朋友可以查看官方说明:(https://github.com/rsalmei/alive-progress ),但比较遗憾的是目前的alive-progress只能在终端中运行,还没有为jupyter开发更美观的交互式部件,但你可以在譬如网络爬虫等任务中使用它,效果也是很不错的。

总结

到此这篇关于如何在Python中妥善使用进度条的文章就介绍到这了,更多相关Python使用进度条内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用Python对Csv文件操作实例代码
May 12 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
详解python中的 is 操作符
Dec 26 Python
用Python3创建httpServer的简单方法
Jun 04 Python
Python后台开发Django的教程详解(启动)
Apr 08 Python
树莓派用python中的OpenCV输出USB摄像头画面
Jun 22 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
Jul 03 Python
anaconda中更改python版本的方法步骤
Jul 14 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
Aug 28 Python
python实现的分析并统计nginx日志数据功能示例
Dec 21 Python
解决Python中报错TypeError: must be str, not bytes问题
Apr 07 Python
python实现计算图形面积
Feb 22 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 #Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Python中使用Opencv开发停车位计数器功能
Python采集股票数据并制作可视化柱状图
python疲劳驾驶困倦低头检测功能的实现
Python实现自动玩连连看的脚本分享
Apr 04 #Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
You might like
php MYSQL 数据备份类
2009/06/19 PHP
php构造函数的继承方法
2015/02/09 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
Python2和Python3中print的用法示例总结
2017/10/25 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
Python退火算法在高次方程的应用
2018/07/26 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
Python __slots__的使用方法
2020/11/15 Python
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
大专生的学习自我评价
2013/12/04 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
疾病防治方案
2014/05/31 职场文书
聘用意向书
2014/07/29 职场文书
力克胡哲观后感
2015/06/10 职场文书
北京青年观后感
2015/06/15 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
Django分页器的用法你都了解吗
2021/05/26 Python
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS