python-进度条库tqdm

609 阅读1分钟

Tqdm 是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。

tqdm的原理是每循环一次更新一次信息,因此要配合循环语句加迭代器使用

tqdm(list)方法可以传入任意一种list,比如数组

from tqdm import tqdm
for i in tqdm(range(1000)):  
  #do something
  pass  

或string的数组

for char in tqdm(["a", "b", "c", "d"]):
  #do something
  pass

100%|█████████████████████████████████████████████████████████████████████████| 1000/1000 [00:00<00:00, 1001266.17it/s]

100%|████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:00<?, ?it/s]

trange(i)tqdm(range(i))的简单写法

from tqdm import trange
for i in trange(100):
  #do something
  pass

100%|████████████████████████████████████████████████████████████████████████████████████████| 100/100 [00:00<?, ?it/s]

for循环外部初始化tqdm,可以打印其他信息

pbar = tqdm(["a", "b", "c", "d"])
for char in pbar:
  pbar.set_description("Processing %s" % char)

0%| | 0/4 [00:00<?, ?it/s]

Processing a: 0%| | 0/4 [00:00<?, ?it/s]

Processing b: 0%| | 0/4 [00:00<?, ?it/s]

Processing c: 0%| | 0/4 [00:00<?, ?it/s]

Processing d: 0%| | 0/4 [00:00<?, ?it/s]

Processing d: 100%|█████████████████████████████████████████████████████████████████████| 4/4 [00:00<00:00, 211.08it/s]

更好的写法是使用wita tqdm() as pbar:

from tqdm import tqdm 
import time
with tqdm(total=100, desc='这是进度条的前缀',postfix='这是进度条的后缀',mininterval=0.3) as pbar:
  for i in range(100):
    time.sleep(0.1)  # 休眠0.1s
    pbar.update(1)
  • total:进度条的总长度
  • desc:进度条的前缀
  • postfix:进度条的后缀
  • minterval:进度条的最小更新时间间隔,

pbar.update(1)代表代码运行到这里进度条加1,pbar.update(2)就代表加2。但进度条的状态更新还要看参数niminterval,若不设置该参数,则就是运行到pbar.update处就马上更新。

需要使用updtae()更新显示