tqdm在阿拉伯语中表示“进步”,是西班牙语(te quiero demasiado)中“我爱你如此深”的缩写。
立即让你的循环显示一个智能进度表-只要用tqdm(iterable)包装任何iterable,你就完成了!
from tqdm import tqdm
for i in tqdm(range(10000)):
...
开销很低——每次迭代约60ns(使用Tqdm_GUI时为80ns),并根据性能回归进行单元测试。相比之下,成熟的进度条有800ns/iter开销。
除了它的低开销之外,tqdm还使用智能算法来预测剩余时间,并跳过不必要的迭代显示,这在大多数情况下可以忽略开销。
tqdm可以在任何平台(Linux、Windows、Mac、FreeBSD、NetBSD、Solaris/SunOS)、任何控制台或图形用户界面上工作,并且与ipython/jupyter笔记本电脑也很友好。
pip install tqdm
pip install -e git+https://github.com/tqdm/tqdm.git@master#egg=tqdm
conda install -c conda-forge tqdm
from tqdm import tqdm
import time
text = ""
for char in tqdm(["a", "b", "c", "d"]):
time.sleep(0.25)
text = text + char
Trange(i) 是tqdm(Range(i))的一个特殊优化实例:
for i in trange(100):
time.sleep(0.01)
循环外部的实例化允许手动控制tqdm():
pbar = tqdm(["a", "b", "c", "d"])
for char in pbar:
time.sleep(0.25)
#设置进程的名称
pbar.set_description("Processing %s" % char)
通过使用with语句对tqdm()更新进行手动控制:
# 一共100个,每次更新10,一共更新10次
with tqdm(total=100) as pbar:
for i in range(10):
time.sleep(0.1)
pbar.update(10)
如果提供了可选变量total(或带有len()的iterable),则会显示预测性统计信息。
with也是可选的(您只需将tqdm()赋给一个变量,但在本例中,不要忘记在末尾使用del或close():
pbar = tqdm(total=100)
for i in range(10):
time.sleep(0.1)
pbar.update(10)
pbar.close()
也许tqdm最美妙的用途是在脚本或命令行中。只需在管道之间插入tqdm(或python-m tqdm),就可以在将进度打印到stderr时将所有stdin传递到stdout。
下面的示例演示了计算当前目录中所有python文件中的行数,其中包括计时信息。
$ time find . -name '*.py' -type f -exec cat \{} \; | wc -l
857365
real 0m3.458s
user 0m0.274s
sys 0m3.325s
$ 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
翻译原址:https://pypi.org/project/tqdm/