process_map 在 tqdm 4.70.0 中低估了大于 1 的块大小的进度
作者: kartiksubbarao创建于 2026年8月14日更新于 2026年8月21日
- 我已经标记了所有适用的类别:
- 导致异常的错误
- 视觉输出错误
- 我已经访问了 [源网站], 并特别阅读了 [已知问题]
- 我已经在 [问题跟踪器] 中搜索重复的问题
- 我已经提到了版本号、操作系统和环境, 如适用:
Fedora 43
tqdm 4.70.0
Python 3.14.6 (main, Jun 11 2026, 00:00:00)
[GCC 15.2.1 20260123 (Red Hat 15.2.1-7)]
linux在从 tqdm 4.69.1 升级到 4.70.0 后, 我发现了一个进度条回退问题。 以下是一个示例:
from tqdm.contrib.concurrent import process_map
def f(x): return x
if __name__ == "__main__": process_map(f, range(101), chunksize=10)4.69.1 在 101/101 时正确完成 4.70.0 在 11/101 处 错误 完成。 我要求 ChatGPT 进行调查。 它在 Python 3.13.5 上重现了这个问题, 并将其追踪到 PR #1709, 特别是这个新的回调:
fut.add_done_callback(lambda _: pbar.update())使用 process_map(..., chunksize=10), 每个 Future 代表最多 10 个输入项的一个块。 因此, 回调每个块都会增加一次条, 而总数仍然是项数。 对于 101 个项, ProcessPoolExecutor 创建了 11 个块, 因此条在 11/101 时结束。
如果这有助于解决问题, 我可以提供更多的测试详细信息。
内容来源: tqdm/tqdm