如何在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字符转换
Sep 06 Python
python 正则表达式 概述及常用字符
May 04 Python
Python实现比较两个列表(list)范围
Jun 12 Python
Python编程实战之Oracle数据库操作示例
Jun 21 Python
python matplotlib中文显示参数设置解析
Dec 15 Python
解决在pycharm中显示额外的 figure 窗口问题
Jan 15 Python
Python操作rabbitMQ的示例代码
Mar 19 Python
python添加菜单图文讲解
Jun 04 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
Python实现微信机器人的方法
Sep 06 Python
Python netmiko模块的使用
Feb 14 Python
PythonPC客户端自动化实现原理(pywinauto)
May 28 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 #Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Python中使用Opencv开发停车位计数器功能
Python采集股票数据并制作可视化柱状图
python疲劳驾驶困倦低头检测功能的实现
Python实现自动玩连连看的脚本分享
Apr 04 #Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
You might like
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
AngularJs Javascript MVC 框架
2016/06/20 Javascript
javascript如何创建对象
2016/08/29 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
2016/12/12 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
python引用DLL文件的方法
2015/05/11 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
python中使用while循环的实例
2019/08/05 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
英国蜡烛、蜡烛配件和家居香氛购买网站:Yankee Candle
2018/12/12 全球购物
应届大学生的推荐信
2013/11/20 职场文书
应届毕业生求职信范文
2013/12/18 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫
redis 解决库存并发问题实现数量控制
2022/04/08 Redis
MySQL数据管理操作示例讲解
2022/12/24 MySQL