如何在Python中妥善使用进度条详解
作者:费弗里 发布时间:2022-05-30 12:10:05
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对其进行安装,安装完成后先来看看它最基本的用法:
利用tqdm.tqdm
,将for循环过程中进行迭代的对象简单包裹,就实现了为循环过程添加进度条以及打印执行速度、已运行时间与预估剩余运行时间等实用信息的功能,同样也可用于列表推导:
而针对迭代对象是range()
的情况,tqdm还提供了简化版的trange()
来代替tqdm(range())
:
其附带的参数desc还可以帮助我们设置进度条的说明文字:
而如果想要在迭代过程中变更说明文字,还可以预先实例化进度条对象,在需要刷新说明文字的时候执行相应的程序:
但当迭代的对象长度一开始未知时,譬如对pandas中的DataFrame.itertuples()
进行迭代,我们就只能对其执行速度等信息进行估计,但无法看到进度条递增情况,因为tqdm不清楚迭代的终点如何:
2.2 配合jupyter notebook/jupyter lab的美观进度条
tqdm对jupyter notebook和jupyter lab有着特殊的支持,且使用方法非常简单,只需要将原有的from tqdm import XXX
的相应功能导入格式修改为from tqdm.notebook import XXX
就可以了,以trange为例:
2.3 配合pandas中的apply
tqdm对pandas中的apply()
过程提供了特殊的支持,因为pandas中的apply()
本质上就是串行循环运算,你可以将pandas中的任何apply操作替换为progress_apply
,并且记住每个单独的progress_apply
前要先执行tqdm.pandas()
,就像下面的例子一样:
3 alive-progress常用方法
虽然与tqdm一样都是为了给循环过程加上进度条而诞生的库,但alive-progress相比tqdm增加了更多花样繁多的动态效果,我们通过调用其专门提供的showtime()
函数可以查看所有可用的动态进度条样式:
同样类似地可以查看所有进度条样式:
使用起来也是非常简单,但与tqdm
用法区别很大,需要配合with关键词,譬如下面我们使用到alive_progress中的alive_bar来生成动态进度条:
通过修改bar参数来改变进度条的样式:
来源:https://www.cnblogs.com/feffery/p/13392024.html


猜你喜欢
- 这篇文章主要介绍了python基于celery实现异步任务周期任务定时任务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- 本文实例讲述了Python数据预处理之数据规范化。分享给大家供大家参考,具体如下:数据规范化为了消除指标之间的量纲和取值范围差异的影响,需要
- 一 Django的视图函数view一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。响
- 如下所示:<div id="app"> <h1>我是直接写在构造器里的模板1</h1&g
- 这个是我在蓝色看到的,楼主想实现图片按比例缩放的功能(缩略图),把图片固定在一定的宽高范围内,不会变形,失真。例如:缩略图的框是94px*9
- 1:下载MySql 官网下载地址:https://dev.mysql.com/downloads/mysql/ 选择对应
- 一、hook在PyTorch中,提供了一个专用的接口使得网络在前向传播过程中能够获取到特征图,这个接口的名称非常形象,叫做hook。可以想象
- 前段时间嗷嗷有发过"好玩的放大镜效果",今天看了下,发现还有简单的方法也能够实现,即利用内外补丁的调整。有兴趣的可以在琢
- 以去掉去掉<!--和-->为例进行说明:def clearContentWithSpecialCharacter(content
- 在画一些曲线图(linecharts)时,常常会出现多条曲线同时画在一张图上面,这时候就需要对不同的曲线进行不同的标注,以使读者能够清晰地知
- 前言本文主要给大家总结介绍了关于Python的一些基础技巧,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。1.starts
- 一、查看event是否开启show variables like '%sche%'; set global ev
- 协程协程(co-routine,又称微线程)是一种多方协同的工作方式。当前执行者在某个时刻主动让出(yield)控制流,并记住自身当前的状态
- pandas读取txt文件读取txt文件需要确定txt文件是否符合基本的格式,也就是是否存在\t,,,等特殊的分隔符一般txt文件长成这个样
- 效果基于Python3。在自己写小工具的时候因为这个功能纠结了一会儿,这里写个小例子,供有需要的参考。小例子,就是点击按钮打开路径选择窗口,
- 现在用python画图已经难不倒一直跟小编学习的小伙伴们了,甚至有的小伙伴画图比小编还要厉害。为此小编还偷偷下了一番功夫,画图这种事情,细节
- 百度有啊2009年情人节logo——大纸袋GG给大纸袋MM送了枝玫瑰花,大纸袋MM奖励了大纸袋GG一个吻,好可爱!淘宝网2009年情人节lo
- 一、使用 reflect.Type 创建实例在通过 reflect.TypeOf 函数获取到变量的反射类型对象之后,可以通过反射类型对象 r
- 不知道大家有没有见过在python数组中使用...符号,因为前段时间读别人代码的时候遇到了这个符号立刻就云里雾里,于是这里特此记录一下。先来
- 1.首先准备好VS2019以及mysql数据库,两者都可以去官网下载,我们直接描述连接过程。2.连接:第一步:打开mysql的安装目录,我本