如何在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获得图片base64编码示例
Jan 16 Python
使用python实现省市三级菜单效果
Jan 20 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
用python3教你任意Html主内容提取功能
Nov 05 Python
Python使用字典的嵌套功能详解
Feb 27 Python
解决Django加载静态资源失败的问题
Jul 28 Python
Python中类似于jquery的pyquery库用法分析
Dec 02 Python
Python图片的横坐标汉字实例
Dec 04 Python
python groupby 函数 as_index详解
Dec 16 Python
pycharm的python_stubs问题
Apr 08 Python
怎么解决pycharm license Acti的方法
Oct 28 Python
用python批量下载apk
Dec 29 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 #Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Python中使用Opencv开发停车位计数器功能
Python采集股票数据并制作可视化柱状图
python疲劳驾驶困倦低头检测功能的实现
Python实现自动玩连连看的脚本分享
Apr 04 #Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
You might like
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
codeigniter实现get分页的方法
2015/07/10 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
分享8个Laravel模型时间戳使用技巧小结
2020/02/12 PHP
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
2013/10/15 Javascript
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
Python 删除整个文本中的空格,并实现按行显示
2018/07/24 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
带你认识Django
2019/01/15 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
德国最新街头服饰网上商店:BODYCHECK
2019/09/15 全球购物
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
法学院毕业生求职信
2014/06/25 职场文书
绿色小区申报材料
2014/08/22 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL