1.概述
在Python编程过程中,输出结果的时间可能需要一些可视化展示,常见的方式就是加入进度条。而Python中有很多模块可以用来实现进度条。下面我们介绍一下Python中4种不同的进度条的使用方法。
2.tqdm进度条
2.1 用法
tqdm是一个快速、可扩展的进度条模块。使用tqdm可以很方便地将程序的处理过程可视化。它主要提供了两种处理方式:手动和自动:
手动模式
from tqdm import tqdm
for i in tqdm(range(10)):
# some processing
自动模式
from tqdm.auto import tqdm
for i in tqdm(range(10)):
# some processing
这样,程序就会自动显示一条进度条,进度的更新会随着程序的运行而自动进行。
2.2 参数
tqdm提供了许多可调参数:
total:进度条的总步骤数(默认None)
desc:进度条描述(默认‘’)
ncols:进度条宽度,字符数(默认80)
bar_format:用于自定义输出格式(默认'{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}]')
3.progressbar进度条
3.1 用法
ProgressBar是Python中一个轻量级的进度条模块。安装方式可以使用pip进行安装:
pip install -q progressbar
实例:
import progressbar
import time
total = 100
#进度条组件
bar = progressbar.ProgressBar(maxval=total, \
widgets=[progressbar.Bar('=', '[', ']'), ' ', progressbar.Percentage()])
bar.start()
for i in range(total):
#进行某些处理
time.sleep(0.1)
# 更新进度条
bar.update(i+1)
bar.finish()
3.2 参数
progressbar.ProgressBar中可用的参数如下:
maxval:进度条的最大值(默认计时器的当前值)。所有progressbar类型都支持此参数。
widgets:进度条的元素:
fill:用来构建进度条的字符(默认'>')
marker:用来标记完成节点的字符(默认“.”)
left:进度条左侧的定界符(默认'[ ')
right:进度条右侧的定界符(默认' ]')
separator:进度条中的元素分隔符(默认'|')
progress format:指示器(默认'%(value)s/%(max_value)s')
percentage_format:使用百分数显示进度(默认'%(percentage).2f%%')。
sideways:如果设置为True,则向控制台添加多个进度条,并在水平方向(而不是垂直方向)上排列它们(默认false)
timer:计时器。计时器显示在进度条正上方,显示已用时间以及剩余时间的估计值。此参数的默认值为None。所有progressbar类型都支持此参数。
fd:要将进度条输出到的文件描述符。此参数的默认值为sys.stderr。
4.progress.cli进度条
4.1 用法
另一个常用的进度条模块是python-progressbar。python-progressbar是Python中进度条库progressbar的CLI版本。要使用这个模块,需要安装:
pip install -q progress
实例:
import time
from progress.bar import Bar
bar = Bar('Processing', max=20)
for i in range(20):
#进行一些处理
time.sleep(0.1)
bar.next()
bar.finish()
4.2 参数
progressbar.ProgressBar中可用的参数如下:
max:进度条的最大值(默认计时器的当前值)。所有progressbar类型都支持此参数。
fill:用来构建进度条的字符(默认是'>')
suffix:进度条右侧的可选后缀(默认是'')
bar_width:控制进度条的总宽度(默认是50)。
5.Asyncio进度条
5.1 用法
Asyncio库标准库包含了一个基于coroutine的进度条实现,其用法与tqdm相似。我们需要在引入模块时从tqdm.asyncio 中导入 tqdm 和 trange 。
实例:
import asyncio
from tqdm.asyncio import tqdm, trange
async def main():
pbar = tqdm(['a', 'b', 'c', 'd'])
for char in pbar:
await asyncio.sleep(0.5)
pbar.set_description("Processing %s" % char)
pbar.close()
for i in trange(4, desc='1st loop'):
for j in trange(5, desc='2nd loop'):
await asyncio.sleep(0.01)
for _ in trange(4, desc='3rd loop', leave=False):
for _ in trange(5, desc='4th loop', leave=False):
for _ in trange(50, desc='5th loop', leave=False):
await asyncio.sleep(0.001)
asyncio.run(main())
5.2 参数
tqdm.asyncio可以接受以下的参数:
desc:进度条的描述(默认‘’)
ncols:进度条的列数(默认无限制)
leave:是否保留进度条(默认false)
mininterval:进度条的最小更新间隔(以秒为单位,默认0.1秒)
maxinterval:进度条的最大更新间隔(以秒为单位,默认10秒)
6.结论
这篇文章介绍了Python中4种不同的进度条的使用方法和相关参数。这些进度条可以帮助您更方便、直观地展示程序的运行过程。通过运用这些进度条,您可以更清楚地了解程序在处理过程中的情况并控制程序的执行。