当前位置: 首页 > article >正文

tqdm用法教程

tqdm 是一个用于 Python 的快速、可扩展的进度条库,它可以在循环中显示进度,使得长时间运行的任务更加直观和易于追踪。以下是 tqdm 的基本用法和一些高级功能介绍。

安装

首先,你需要安装 tqdm 库。可以通过 pip 来安装:

pip install tqdm

基本用法

1. 在 for 循环中使用

最简单的用法是在 for 循环中包裹迭代器:

from tqdm import tqdm

for i in tqdm(range(100)):
    # 模拟一些处理时间
    pass

这将在控制台上显示一个进度条,随着循环的进行逐步填充。

2. 使用 tqdm.tqdm 包装任意可迭代对象

你可以将任何可迭代对象传递给 tqdm 函数来包装它:

from tqdm import tqdm

items = ["item{}".format(i) for i in range(100)]
for item in tqdm(items):
    # 处理每个 item
    pass

高级用法

1. 设置描述和单位

你可以通过 desc 参数设置进度条的描述文字,通过 unit 参数设置进度条的单位:

from tqdm import tqdm

for i in tqdm(range(100), desc="Processing", unit="it"):
    # 模拟一些处理时间
    pass
2. 手动更新进度条

如果你需要手动控制进度条的更新(例如在循环之外或异步任务中),可以创建一个 tqdm 对象并调用其 update 方法:

from tqdm import tqdm

with tqdm(total=100) as pbar:
    for i in range(10):
        # 模拟一些处理时间
        pbar.update(10)
3. 显示额外信息

你可以在每次迭代时更新进度条的后缀信息,这对于显示额外的状态信息非常有用:

from tqdm import tqdm

for i in tqdm(range(100), desc="Processing", unit="it"):
    # 更新后缀信息
    tqdm.set_postfix({'loss': f'{i/100:.4f}'})
    # 模拟一些处理时间
    pass
4. 嵌套进度条

tqdm 还支持嵌套进度条,适合用于多层循环的情况:

from tqdm import tqdm

for i in tqdm(range(5), desc="Outer Loop"):
    for j in tqdm(range(100), desc="Inner Loop", leave=False):
        # 模拟一些处理时间
        pass

leave=False 参数确保内部进度条在完成时不会保留,避免终端输出混乱。

其他功能

  • 颜色和样式:可以通过 colour 参数设置进度条的颜色,例如 colour='green'
  • 动态刷新:对于频繁更新的进度条,可以设置 mininterval 参数来控制最小刷新间隔,防止终端输出过多。
  • 文件对象:可以将进度条输出到文件或其他流对象,而不是默认的标准输出。

示例代码

以下是一个完整的示例,展示了如何使用 tqdm 跟踪一个模拟训练过程中的进度:

from tqdm import tqdm
import time

total_epochs = 10
total_batches = 100

for epoch in tqdm(range(total_epochs), desc="Epochs", position=0):
    for batch in tqdm(range(total_batches), desc="Batches", position=1, leave=False):
        # 模拟训练过程
        time.sleep(0.01)

这个示例会在终端上显示两个嵌套的进度条,分别跟踪外层的 epochs 和内层的 batches。

希望这些信息能帮助你更好地理解和使用 tqdm!如果你有任何具体问题或需要进一步的帮助,请随时告诉我。


http://www.kler.cn/a/536294.html

相关文章:

  • 深浅拷贝~
  • 【2024华为OD-E卷-100分-箱子之字形摆放】((题目+思路+JavaC++Python解析)
  • react18新增了哪些特性
  • 《运维:技术的基石,服务的保障》
  • Windows图形界面(GUI)-QT-C/C++ - QT Frame
  • 基于“蘑菇书”的强化学习知识点(五):条件期望
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter5-基本引用类型
  • Python调取本地MongoDB招投标数据库,并结合Ollama部署的DeepSeek-R1-8B模型来制作招投标垂直领域模型
  • Git(分布式版本控制系统)系统学习笔记【并利用腾讯云的CODING和Windows上的Git工具来实操】
  • 7.list
  • Kotlin协程详解——协程取消与超时
  • 博主卖DeepSeek相关课程1天收入50000元
  • 鸿蒙北向开发OpenHarmony4.1 DevEco Studio开发工具安装与配置
  • python学习过程中,Scrapy爬虫和requests库哪个更适合新手?
  • 在 MySQL 8 中配置主从同步(主从复制)是一个常见的需求,用于实现数据的冗余备份、读写分离等。
  • 前端知识速记--JS篇:柯里化
  • shell脚本的一些学习笔记----(一)
  • python编程-类结构,lambda语法,原始字符串
  • ROS2从入门到精通3-1:详解urdf语法并自定义机器人
  • c#中Thread.Join()方法的经典示例
  • 轻量化开发实践!Code Server在香橙派Zero3上的完美运行与配置方案
  • 市场柱线-机器人-《广东省建设现代化产业体系2025年行动计划》-提到大力发展人形机器人等具身智能机器人
  • bigemap pro如何裁剪栅格数据?
  • 路由器如何进行数据包转发?
  • 【LeetCode】152、乘积最大子数组
  • 音频进阶学习十一——离散傅里叶级数DFS