我正在使用 Python 中的
tqdm
库在嵌套循环结构中更新进度条。我注意到进度条更新中的异常行为,我试图了解 tqdm
如何管理这些更新的线程(或子进程)。我关心的是 tqdm
是否使用单独的线程进行进度条更新以及它如何与嵌套循环中的标准打印语句交互。
这是我的代码的简化版本:
from tqdm import trange
def main():
X = 100
for i in trange(X):
print(i)
for j in range(X):
print(j)
k = j * i
print("Done🛠️")
return 0
if __name__ == '__main__':
main()
当我运行此代码时,我观察到直到执行结束才打印来自
tqdm
的进度条更新。这是我得到的输出片段:
[Output Snippet]
...
Done🛠️
100%|██████████| 100/100 [00:00<00:00, 3561.95it/s]
我的问题是:
tqdm
是否使用单独的线程或子进程来更新进度条?tqdm
如何处理进度条更新?回答您的问题:
我不相信
tqdm
会创建任何线程来更新进度条。如果确实如此,为什么它很重要?
如果您按照我的建议重新运行代码,您现在就知道
tqdm
如何与 print
调用一起工作,也就是说,不是很好。尝试使用 tqdm.write
代替:
from tqdm import tqdm, trange
import time
def main():
for i in trange(100, position=0):
tqdm.write(str(i))
time.sleep(.1)
print("Done🛠️")
if __name__ == '__main__':
main()