Python中进度条的实现(tqdm)

python中进度条的实现(tqdm)

最近弄cv的时候经常会需要查看数据生成的进度或者是处理的进度,使用tqdm可以很好的通过进度条可视化整个进程,使用起来也十分方便,其封装得已经十分完整,在这里记录一下经验,供以后查看。

官方GitHub文档(https://github.com/tqdm/tqdm)
参考文档,tqdm进度条的主要实现方式有三类,分别为迭代(Iterable-based),手动(manual)和模块(module):

提示:这里使用的tqdm是tqdm包中的一个模块,使用的时候输入from tqdm import tqdm

迭代(Iterable-based)

在这种方式下,只需要将所有可迭代对象用tqdm()封装起来即可。一般与for循环连用。
如:

from tqdm import tqdm

sum = 0
iter = [1, 2, 3, 4, 5, 6, 7, 8]
for elem in tqdm(iter):
	sum = sum + elem

结果如下:
运行结果
值得注意的,对于数值迭代,可以使用trange()模块,效果等于tqdm(range(i))

手动(Manual)

手动方式使用上下文管理器会更加方便:

with tqdm(total=100) as pbar:
	for i in range(10):
		pbar.update(10)

这种方法可以在你需要的地方对进度条增加特定的数值,更加灵活。
当然,也可以不使用上下文管理器,但是这样我就需要在使用完之后,调用tqdm对象的close方法,防止不必要的资源占用。

模块(Module)

在命令行中,tqdm可以放入任何操作中,它会经过该进程所有的标准输入与输出stdin&stdout,直至进程结束。这时候,就可以轻松查看任何任务的进度包括像查询啊,解压缩一类的。
这里引用几个官方的例子:

$ time find . -name '*.py' -type f -exec cat \{} \; | tqdm | wc -l
857366it [00:03, 246471.31it/s]
857365

real    0m3.585s
user    0m0.862s
sys     0m3.358s

根据参数可以显示进度条:

$ find . -name '*.py' -type f -exec cat \{} \; |
    tqdm --unit loc --unit_scale --total 857366 >> /dev/null
100%|███████████████████████████████████| 857K/857K [00:04<00:00, 246Kloc/s]

以上,仅供参考,如有问题与错误请在评论区讨论!欢迎批评指正!

你可能感兴趣的:(python学习)