当你在跑一个循环程序时,1分钟过去了,不着急;5分钟过去了,不着急;(处理大型数据时) 1小时过去了!???开始焦虑了:wtf?代码有没有写错?为什么这么慢?什么时候才能跑完?
这时候,我们可使用tqdm库。
tqdm
是一个智能进度表,是一个快速,可扩展的 Python 进度条,可以在 Python 长循环中添加一个进度提示信息。
tqdm用于可迭代对象 使用时只需要用tqdm
包装可迭代的对象:tqdm(iterable)
。例如:
from tqdm import tqdmfrom time import sleepfor i in tqdm(range(100 )): sleep(0.01 )
100%|████████████████████████████████████████████████████████████████████████████████| 100/100 [00:01<00:00, 63.53it/s]
可以看到当前的进度,已用时间、(预计)剩余时间信息
tqdm
可以对任意可迭代对象使用。例如列表:
from tqdm import tqdmfrom time import sleep text = '' for char in tqdm(['a' , 'b' , 'c' , 'd' ]): # 遍历列表这个可迭代对象,将其中的字符串拼接在一起 sleep(0.25 ) text = text + char
100%|████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:01<00:00, 3.93it/s]
trange(i)
可以看作tqdm(range(i))
的一个简化版本:
from tqdm import trangefor i in trange(100 ): sleep(0.01 )
100%|████████████████████████████████████████████████████████████████████████████████| 100/100 [00:01<00:00, 63.13it/s]
pandas中的tqdm运用 tqdm对pandas中的apply()过程提供了特殊的支持,因为pandas中的apply()本质上就是串行循环运算,使用progress_apply 方法替换apply方法;并且记住每个单独的progress_apply前要先执行tqdm.pandas()
import pandas as pdimport numpy as npfrom tqdm import tqdm df = pd.DataFrame(np.random.randint(0 , 100 , (100000 , 6 ))) tqdm.pandas() df = df.progress_apply(lambda x: x**2 )
100%|██████████████████████████████████████████████████████████████████████████████████| 6/6 [00:00<00:00, 1496.72it/s]