持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情
介绍
当你运行一个耗时较长的程序时,发现等待了很长时间突然中断了,具体处理到哪里、完成度如何,却不得而知。可能会有人想到用进度条工具tqdm,这是一个比较常用也非常经典的进度条工具包,本文介绍的是另外一个进度条工具包alive-progress,有更加漂亮的动画,还可以显示实时进度、预计完成时间等功能,能够让程序的执行过程更加清晰。
首先我们可以看一下具体的动画效果:
安装和使用
安装
pip install alive-progress
使用
在循环中使用alive-progress是最常见的用法,该模块并不想tqdm等进度条库一样会自动更新,只有调用了bar()才会让进度条+1.
如下代码示例:
from alive_progress import alive_bar
import time
# 使用 with 语句创建一个进度条
# 给 alive_bar 传入进度条总数目(这里是 100)
with alive_bar(100, force_tty=True) as bar:
for item in range(100):
# 等待 1s
time.sleep(0.1)
bar() # 更新进度条,进度 +1
运行上述代码可以看到如下效果:
当然也可以不给进度条传入总数目这个参数,此时进度条将不显示进度,进入未定义模式:
from alive_progress import alive_bar
import time
# 使用 with 语句创建一个进度条
# 给 alive_bar 传入进度条总数目(这里是 100)
with alive_bar(force_tty=True) as bar: # 不指定总数目
for item in range(100):
# 等待 1s
time.sleep(0.1)
bar() # 更新进度条,进度 +1
执行效果图如下:
如果想要直接操作进度条显示的位置,可以给alive_bar的manual的参数设置成True:
from alive_progress import alive_bar
import time
total = 100
with alive_bar(total, manual=True) as bar: # total 可以不指定,这时候只有百分比
bar(0.5) # 进度到 50%
time.sleep(0.5)
bar(0.1) # 进度到 10%
time.sleep(0.5)
bar(0.75) # 进度到 75%
time.sleep(0.5)
bar(1.0) # 进度到 100%
time.sleep(0.5)
bar(10) # 进度到 1000%
for i in range(1,101):
bar(i/100) # 设定进度为 i%
time.sleep(0.05)
执行效果如下:
当然,在运行过程中我们也需要输出一些提示信息,直接使用 print 可以在不破坏进度条的情况下输出一行提示信息,text 方法则可以在进度条尾部添加后缀字符,而 title 参数则可以给进度条添加标题(前缀信息),具体使用方法及效果如下:
from alive_progress import alive_bar
import time
# 定义标题(前缀字符)为 HelloGitHub
with alive_bar(10, title="HelloGitHub") as bar:
for i in range(10):
time.sleep(1)
bar() # 让进度 +1
bar.text("Processing Work #%d"%(i+1)) # 更新进度条后缀
print("Work #%d finished"%i) # 输出一行信息
执行效果如下所示:
总结
上述文章介绍了alive-progress模块的基本用法,其实我们还可以修改进度条的样式甚至可以自定义进度条,本文就为大家介绍一下基本用法,更多高级的用法可以参考官方文档。
\