tqdm 在循环开始时打印额外内容

tqdm printing extra content at the start of a cycle

我正在开发一个简单的批处理迭代器,它应该能够在 运行 通过一整套值时跟踪进度。为此,我正在使用 tqdm,但在迭代开始时它打印的是空内容。

代码:

for start_idx in trange(0, len(inputs) - batchsize + 1, batchsize):
    excerpt = slice(start_idx, start_idx + batchsize)

输出类似:

Epoch: 0
100%|██████████| 1562/1562 [00:02<00:00, 630.24it/s]
  0%|          | 0/1562 [00:00<?, ?it/s]Epoch: 1
 62%|██████▏   | 965/1562 [00:01<00:00, 623.74it/s]

我在 progressbar 模块上遇到过类似的问题,我只需要将输出类型换成 sys.stdout 但在这个模块中我找不到设置它的参数。有什么建议吗?

Edit1:这发生在 PyCharm 终端

线索是第二行末尾的Epoch: 1

在您的代码中的某处,您正在打印它,这会导致 tqdm 关闭;它通常会使用 \r(回车 return)字符到 return 到行的开头,但是您正在打印换行符,所以上一行仍然存在。