原文地址:
https://blog.csdn.net/zejianli/article/details/77915751
可以显示循环的进度条的库,再也不用担心不知道程序跑到哪里还要跑多久了
tqdm()可以直接包裹iterable的对象
from tqdm import tqdm,trange from time import sleep text = "" for char in tqdm(["a", "b", "c", "d"]): text = text + char sleep(0.1)
trange(i)相当于tqdm(range(i))
for i in trange(100): sleep(0.01)
可以在循环外面预先定义tqdm的对象
pbar = tqdm(["a", "b", "c", "d"]) for char in pbar: pbar.set_description("Processing %s" % char)
有两个参数比较有用,desc(str)和leave(bool)
desc可以指定这个循环的的信息,以便区分。上面的set_description(str)和这个应该是一样的。
leave则表示进度条跑完了之后是否继续保留
for i in tqdm(range(10), desc='1st loop'): for j in trange(100, desc='2nd loop', leave=False): sleep(0.01)
如果要在Jupyter Notebook上面使用,那么要把tqdm换成tqdm_notebook,trange换成tnrange
from tqdm import tnrange, tqdm_notebook
from time import sleep
for i in tqdm_notebook(range(10), desc='1st loop'):
for j in tnrange(100, desc='2nd loop', leave=False):
sleep(0.01)
如果在终端运行时需要在循环内打印点什么,就不能直接用print()了,而要用tqdm.write(str) 。
在Jupyter Notebook里面没有这个问题,还能用print()。
=======================================================
另注(非原文内容):
desc(str) 指定循环信息是比较好用的,如:
from tqdm import trange, tqdm from time import sleep for i in tqdm(range(100), desc='1st loop'): sleep(1)
实际操作中发现 desc(str) 比 set_description 好用。