首页 > 编程语言 >让你的代码动起来:Python进度条神器tqdm详解及应用实例

让你的代码动起来:Python进度条神器tqdm详解及应用实例

时间:2023-06-04 21:55:05浏览次数:47  
标签:tqdm 进度条 Python 代码 import 我们

各位Python高手,今天我要给大家介绍一个好用的库,它就是:tqdm

tqdm在阿拉伯语中的意思是 "进展",所以这个库也被称为 "快速进展条"。不得不说,这个名字真的很有创意!

让我们想象一下,你正在运行一个耗时的数据处理任务或者训练一个复杂的深度学习模型。你坐在那里,盯着屏幕,焦急地等待程序完成。这种等待的痛苦,我想你我都有切身体会。这时候,有个可视化的进度条会不会让你感觉好很多呢?这就是我们今天要推荐的 tqdm 库的功能。

tqdm 是一个 Python 快速、可扩展的进度条工具库,它有很多优点:

易于使用:只需在 Python 循环中包裹你的迭代器,一行代码就能产生一个精美的进度条。

灵活:它可以和 for 循环、pandas dataframe的 apply 函数以及 Python 的 map 函数等等配合使用。

高效:tqdm 使用了智能算法,即使在数据流非常快的情况下,也不会拖慢你的代码速度。

让我们看一下 tqdm 在机器学习任务中的应用示例:

from tqdm import tqdm
import time
for i in tqdm(range(100)):
    # 假设我们正在进行一些耗时的操作,比如训练深度学习模型
    time.sleep(0.01)

运行这段代码,你会看到一个动态更新的进度条。tqdm 会告诉你还有多少项需要处理,预计剩余时间,以及当前的处理速度。

你会看到一个动态更新的进度条。tqdm 会告诉你还有多少项需要处理,预计剩余时间,以及当前的处理速度。

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

我们继续深入到 tqdm 的更多使用场景和用法。

01

你是否曾在下载大文件时,想要知道下载的进度呢?tqdm 可以很好地满足你的需求。看看下面的代码:

import requests
from tqdm import tqdm
response = requests.get(url, stream=True)  # 把stream参数设置为True
file_size = int(response.headers['Content-Length'])
chunk = 1
chunk_size = 1024
num_bars = int(file_size / chunk_size)
with open(filename, 'wb') as fp:
    for chunk in tqdm(response.iter_content(chunk_size=chunk_size), total=num_bars, unit='KB', desc=filename, leave=True): 
        fp.write(chunk)

在上面的代码中,我们首先获取到要下载文件的大小。然后,我们在 tqdm 中设置总的进度条数目为文件大小除以每个进度条代表的字节数。这样,当我们下载每一个字节块并写入文件时,tqdm 就会自动更新进度条。

02

在机器学习中,我们经常需要对大规模的数据进行预处理。使用 tqdm,我们可以很直观地看到数据预处理的进度。

import pandas as pd
from tqdm import tqdm
tqdm.pandas()
# 假设我们有一个大的 dataframe,我们想要对其 'text' 列进行一些预处理
df['processed_text'] = df['text'].progress_apply(lambda x: preprocess(x))

在上面的代码中,我们首先通过 tqdm.pandas() 方法对pandas 进行 patch。然后,我们就可以在 pandas 的 apply 方法中使用 progress_apply,这样就可以在数据处理的同时显示进度条。

03

在训练深度学习模型时,我们经常需要迭代大量的 epochs。使用 tqdm,我们可以清晰地看到模型训练的进度。

from tqdm import tqdm
# 假设我们有一个训练数据集 train_dataloader 和一个模型 model
for epoch in range(num_epochs):
    epoch_iterator 
= tqdm(train_dataloader, desc=
"Training (Epoch %d)"
 % epoch)
    
    for step, batch in enumerate(epoch_iterator):
        # 模型训练的代码
        # ...

04

在许多情况下,我们的代码可能包含嵌套循环。在这种情况下,我们可以使用 tqdm 创建多个进度条。

from tqdm import tqdm
import time
for i in tqdm(range(100), desc="Outer loop"):
    for j in tqdm(range(10), desc="Inner loop", leave=False):
        # 执行一些耗时的操作
        time.sleep(0.01)

在这段代码中,我们创建了两个进度条,一个用于外部循环,一个用于内部循环。leave=False 选项将在内部循环结束后删除内部循环的进度条。

05

有时候,我们可能需要手动更新进度条。例如,当我们在下载文件或处理批量数据时,我们可能一次处理多个项目。在这种情况下,我们可以使用 update 方法。

from tqdm import tqdm
import time
with tqdm(total=100) as pbar:
    for i in range(10):
        # 执行一些耗时的操作
        time.sleep(0.1)
        pbar.update(10)

在这段代码中,我们首先创建了一个进度条,然后在循环中使用 update 方法手动更新进度条的值。

以上就是 tqdm 的一些更深入的用法。你应该可以看出 tqdm 是一个非常强大的工具,无论你在做什么,只要你需要等待,就可以使用 tqdm。希望你可以在你的代码中尝试使用 tqdm,看看它如何提升你的编程体验。

我们的公众号会一直推荐有用的 Python 库和编程技巧,如果你觉得我们的文章有用,请记得关注我们,以便获取更多的内容。让我们一起成为更好的 Python 程序员!

标签:tqdm,进度条,Python,代码,import,我们
From: https://www.cnblogs.com/hsluoyang/p/17456462.html

相关文章

  • python打开文件时的mode选择
    常用:追加:a覆盖:wModeDescriptionExamplerReadmode.Opensthefileforreading(defaultmode).Ifthefiledoesn’texist,anerrorwillberaised.file=open('example.txt','r')wWritemode.Opensthefileforwriting.Ifth......
  • python tkinter scale 滑动选择刻度条
    tkinter.Scale(d_f,from_=0,to=20,tickinterval=5,orient="horizontal")1.参数汇总归纳总结Scale组件中一些常用的参数以及用法。 2.方法汇总coords(value=None)获得当前滑块的位置对应Scale组件左上角的相对坐标如果设置value参数,则返回当滑块所在该位置......
  • 基于Selenium库的python爬虫脚本,爬取painterest上的图片
    基于Selenium库的python爬虫脚本,爬取painterest上的图片问题背景Pinterest是一个社交媒体平台,它提供了一个虚拟的个人兴趣画板,让用户可以收集和分享他们喜欢的图片、视频和链接。上面有许多优秀的图片供浏览和下载,但是一个个点图片下载非常麻烦。于是想要用Python语言写一个自......
  • Python爬虫入门六之Cookie的使用
     大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用。为什么要使用Cookie呢?Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个......
  • python中生产者和消费者理论
    1.模型理论生产者消费者他是一个概念,(由于生产者消费者模型并不局限于某一类技术,因此,有多种实现方式)所以,代码很简单,所以这里首先要弄懂理论。 1.1 生产者消费者模型模型指的是一种解决问题的套路。 1.2生产者消费者模型中包含两类重要角色一类叫生产者,另一类叫消费者......
  • python环境 anaconda安装
    官网:https://www.anaconda.com/distribution/#macos国内镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/安装时注意勾选:安装后,加入国内源:condaconfig--addchannelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/condaconfig--setshow_cha......
  • python 列表,元组,字典
    列表 list[]print("更新")list=[]list.append("aa")list.append('bb')print(list)print("删除")dellist[1]print(list)print(len([1,2,3]))print([1,2,3]+[4,5,6])print(["a"]*3)print(3in[1,2,3])forxi......
  • nodejs vuejs java python 入门到高级视频
    多抽出一分钟学习,让你的生命更加精彩!高性能高可用Yii2.0电商平台仿京东商城高级组件MySQLLVSDocker+Kubernetes(k8s)微服务容器化实战实战Docker到Kubernetes技术系列视频教程@黑马JAVAEE19期⑭jQuery实战经典【No0066】尚学堂架构师视频06、微服务架构00、SpringBoot微服务架......
  • python基础学习-读写CSV文件
    CSV文件介绍参考:Python-Core-50-Courses/第23课:用Python读写CSV文件.mdatmaster·jackfrued/Python-Core-50-Courses(github.com)CSV 全称逗号分隔值文件是一种简单、通用的文件格式,被广泛的应用于应用程序(数据库、电子表格等)数据的导入和导出以及异构系统之间的数据......
  • python基础学习-发送邮件
    importsmtplibfromemail.headerimportHeaderfromemail.mime.multipartimportMIMEMultipartfromemail.mime.textimportMIMEText"""发送普通邮件"""#创建邮件主体对象email=MIMEMultipart()#设置发件人、收件人和主题email['From']=&#......