分享

没有进度条的Python没有灵魂:tqdm库的使用

 NeighborMrSun 2023-03-05 发布于湖南

当你在跑一个循环程序时,1分钟过去了,不着急;5分钟过去了,不着急;(处理大型数据时)1小时过去了!???开始焦虑了:wtf?代码有没有写错?为什么这么慢?什么时候才能跑完?

图片
图片

这时候,我们可使用tqdm库。

tqdm 是一个智能进度表,是一个快速,可扩展的 Python 进度条,可以在 Python 长循环中添加一个进度提示信息。

tqdm用于可迭代对象

使用时只需要用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]

pandas中的tqdm运用

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(0100, (1000006)))
tqdm.pandas()
df = df.progress_apply(lambda x: x**2)
100%|██████████████████████████████████████████████████████████████████████████████████| 6/6 [00:00<00:00, 1496.72it/s]

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多