Hero image home@2x

如何在 tqdm 进度条中实现多行显示?

如何在 tqdm 进度条中实现多行显示?

tqdm 进度条多行显示

在数据处理或长时间运行的脚本中,tqdm 是一个非常实用的 Python 库,用于显示进度条。但默认情况下,它只显示一行进度信息。在一些复杂的任务中,可能需要用到多行显示,以便提供更多的反馈信息。本文将详细介绍如何使用 tqdm 实现进度条的多行显示。

安装 tqdm

  • 首先,确保你已经安装了 tqdm 库。如果还没有安装,可以通过以下命令进行安装:

pip install tqdm

使用 tqdm 实现多行显示

为了实现多行显示,我们可以利用 tqdmset_postfix 方法附加额外的信息。这里是一个简单的例子来展示如何在进度条中添加多行信息:

from tqdm import tqdm

import time

# 示例函数

def example_task(num_iterations):

# 初始化进度条

pbar = tqdm(total=num_iterations)

for i in range(num_iterations):

# 模拟任务执行

time.sleep(0.1)

# 使用 set_postfix 添加多行信息

pbar.set_postfix(

{'current': i + 1, 'status': 'processing', 'eta': f'{(num_iterations - i - 1) * 0.1:.1f}s'}

)

pbar.update(1)

pbar.close()

# 运行示例任务

example_task(100)

命令示例解释

  • tqdm(total=num_iterations):初始化进度条,指定总数。
  • pbar.set_postfix():添加附加信息,接受一个字典,可以提供多个键值对。
  • time.sleep(0.1):模拟一个耗时的任务,这里设置为 0.1 秒。
  • pbar.update(1):更新进度条,表示已完成一项任务。
  • pbar.close():关闭进度条,释放资源。

注意事项

  • 确保在循环中定期调用 pbar.update(),否则进度条不会更新。
  • 可以通过 set_postfix_str() 来更新单行字符串信息,但不支持多行显示。
  • 在复杂的任务中,考虑使用多线程或异步代码来避免因为 I/O 阻塞导致的进度条停滞。

实用技巧

  • 你可以使用 pbar.clear() 来清除当前的进度条信息,从而提供新的信息。
  • 考虑将耗时任务分成多个子任务,在每个子任务完成后更新进度条,以便实时反馈进度。
  • tqdm 进度条中嵌入复杂的 set_postfix 信息时,可以利用字符串格式化来提升可读性。