
tqdm 进度条多行显示
在数据处理或长时间运行的脚本中,tqdm 是一个非常实用的 Python 库,用于显示进度条。但默认情况下,它只显示一行进度信息。在一些复杂的任务中,可能需要用到多行显示,以便提供更多的反馈信息。本文将详细介绍如何使用 tqdm 实现进度条的多行显示。
安装 tqdm
- 首先,确保你已经安装了 tqdm 库。如果还没有安装,可以通过以下命令进行安装:
pip install tqdm
使用 tqdm 实现多行显示
为了实现多行显示,我们可以利用 tqdm 的 set_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 信息时,可以利用字符串格式化来提升可读性。



