当你在跑一个循环程序时,1分钟过去了,不着急;5分钟过去了,不着急;(处理大型数据时)1小时过去了!???开始焦虑了:wtf?代码有没有写错?为什么这么慢?什么时候才能跑完?
这时候,我们可使用tqdm库。
tqdm
是一个智能进度表,是一个快速,可扩展的 Python 进度条,可以在 Python 长循环中添加一个进度提示信息。
使用时只需要用tqdm
包装可迭代的对象:tqdm(iterable)
。例如:
from tqdm import tqdm
from time import sleep
for i in tqdm(range(100)):
sleep(0.01)
100%|████████████████████████████████████████████████████████████████████████████████| 100/100 [00:01<00:00, 63.53it/s]
可以看到当前的进度,已用时间、(预计)剩余时间信息
tqdm
可以对任意可迭代对象使用。例如列表:
from tqdm import tqdm
from 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 trange
for i in trange(100):
sleep(0.01)
100%|████████████████████████████████████████████████████████████████████████████████| 100/100 [00:01<00:00, 63.13it/s]
tqdm对pandas中的apply()过程提供了特殊的支持,因为pandas中的apply()本质上就是串行循环运算,使用progress_apply 方法替换apply方法;并且记住每个单独的progress_apply前要先执行tqdm.pandas()
import pandas as pd
import numpy as np
from 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]
联系客服