tqdm-让您的循环显示一个智能进度条的python库
tqdm源自阿拉伯语taqaddum(تقدّم),意为“进步”,是西班牙语中的“我非常爱你”的缩写(te quiero demasiado)。
立即让您的循环显示一个智能进度表-只需用包裹所有可迭代的对象tqdm(iterable),就完成了!
介绍
from tqdm import tqdm
for i in tqdm(range(
...
76%|████████████████████████ | 7568/10000 [00:33<00:10, 229.00it/s]
trange(N)也可以用作的便捷快捷方式 tqdm(range(N))。
它也可以作为带有管道的模块执行:
$ seq 9999999 | tqdm --bytes
75.2MB [00:00, 217MB/s]
9999999
$ tar -zcf - docs/ | tqdm --bytes --total `du -sb docs/ | cut -f1` \
>
32%|██████████▍ | 8.89G/27.9G [00:42<01:31, 223MB/s]
开销很低-每次迭代约60ns(带有时tqdm.gui为80ns ),并且已针对性能下降进行了单元测试。相比之下,完善的 ProgressBar具有800ns / iter的开销。
除了较低的开销外,还tqdm使用智能算法来预测剩余时间并跳过不必要的迭代显示,这在大多数情况下都可以忽略不计。
tqdm 可在任何平台或GUI中的任何平台(Linux,Windows,Mac,FreeBSD,NetBSD,Solaris / SunOS)上运行,并且还与IPython / Jupyter笔记本电脑友好。
tqdm不需要任何依赖项(甚至不需要curses!),只需Python以及支持carriage return \r和 line feed \n控制字符的环境即可。
用法
tqdm非常通用,可以多种方式使用。下面给出了三个主要方面。
基于迭代
包装tqdm()任何可迭代的对象:
from tqdm import tqdm
from time import sleep
text = ""
for char in tqdm(["a", "b", "c", "d"]):
sleep(0.25)
text = text + char
trange(i)是以下内容的特殊优化实例tqdm(range(i)):
from tqdm import trange
for i in trange(100):
sleep(0.01)
循环外的实例化允许手动控制tqdm():
pbar = tqdm(["a", "b", "c", "d"])
for char in pbar:
sleep(0.25)
pbar.set_description("Processing %s" % char)