【发布时间】:2022-07-28 17:56:03
【问题描述】:
我有一个代码,其中两个使用 tqdm 运行的生成器被压缩并一起循环,这导致两个进度条被打印到标准输出。两者都更新跟踪进度,但只有第一个上升到 100%,而第二个错过了最终更新,即使外部循环的最后一次迭代成功完成。
让我向您展示一些玩具示例来说明这个问题。第一个带有 2 个压缩生成器:
print('Start.')
for a, b in zip(tqdm(range(100)), tqdm(range(100))):
pass
print('End.')
产生输出:
Start.
100%|██████████████████████████████████████| 100/100 [00:00<00:00, 42247.22it/s]
99%|██████████████████████████████████████▌| 99/100 [00:00<00:00, 68261.73it/s]
End.
带有 3 个压缩生成器的第二个:
print('Start.')
for a, b, c in zip(tqdm(range(100)), tqdm(range(100)), tqdm(range(100))):
pass
print('End.')
产生输出:
Start.
100%|██████████████████████████████████████| 100/100 [00:00<00:00, 75288.17it/s]
99%|█████████████████████████████████████▌| 99/100 [00:00<00:00, 112713.38it/s]
99%|██████████████████████████████████████▌| 99/100 [00:00<00:00, 60733.67it/s]
End.
就像我在实践中所说的,最后一次迭代按预期完成,所以它只是一个装饰性的细节。我尝试在循环之后使用flush=True 放置和清空打印,但这没有帮助。如果有人对如何解决此问题并让所有进度条达到 100% 有任何建议,请分享。
【问题讨论】: