tqdm是python中打印进度条的一个简易工具包,可以方便查看循环的进度。具体见tqdm文档
1. 搭配迭代器使用
from tqdm import tqdm
for i in tqdm(range(10000)):
pass
tqdm
的构造函数为:
tqdm(iterable=None, desc=None, total=None, leave=True, file=None,
ncols=None, mininterval=0.1, maxinterval=10.0, miniters=None,
ascii=None, disable=False, unit='it', unit_scale=False,
dynamic_ncols=False, smoothing=0.3, bar_format=None, initial=0,
position=None, postfix=None, unit_divisor=1000, write_bytes=None,
lock_args=None, nrows=None, gui=False, **kwargs)
- iterable: 迭代器
- desc: 进度条前缀
- total: 设置steps, 默认
len(iterable)
- leave: 结束时是否保留进度条,默认
True
- file: 设置在哪里打印进度,默认
sys.stderr
. 可用file.write(str)
和file.flush()
来写入文件。 - ncols: 设置进度条的宽度。如果指定则会动态调整去适应该宽度,如果不指定则会适配
terminal
的最大宽度,可能造成换行。后面的计数和统计不限宽,如果设为0,则只打印计数和统计信息不显示进度条。(一般设置为70左右比较合适) - mininterval: 最小更新间隔,默认0.1s
- maxinteravl: 最大更新间隔,默认10s
- miniters: 最小更新间隔,默认10个iteration
- ascii: 进度条的编码方式
- position: 进度条打印间隔行数,默认0。一般用于嵌套的进度条。
2. 设置动态数据打印
t = tqdm(range(10), ncols=70)
for i in t:
t.set_description(f"hello: {i:0>3}")
3. 中途打印不干扰进度条
t = tqdm(range(10), ncols=70)
for i in t:
t.set_description(f"hello: {i:0>3}")
t.write(f"{i}") # 使用t.write代替print
4. 在jupyter中打印不干扰进度条
from tqdm import tqdm_notebook as tqdm
for i in tqdm(range(10)):
print(i)
5. 使用gui显示进度条
from tqdm.gui import tqdm as tqdm_gui
t = tqdm_gui(range(100), ncols=50)
for i in t:
t.set_description(f"hello: {i:0>3}")
6. 双循环嵌套进度条
from tqdm import tqdm
for i in range(10, position=0, leave=False):
for j in range(10, position=1, leave=False):
func(i, j)
7. enumerate和tqdm搭配使用
注意enumerate一定要放在tqdm的外面,如果反过来则无法显示进度条。