下面的问题是针对使用PyCharm的人。有嵌套的for
循环,tqdm
用于对应于每个for
循环的进度条。代码如下所示。
from tqdm import tqdm
import time
for i in tqdm(range(5), desc="i", colour='green'):
for j in tqdm(range(10), desc="j", colour='red'):
time.sleep(0.5)
但问题是,内部循环的进度条每次都出现在换行符中,如下所示。
i: 0%| | 0/5 [00:00<?, ?it/s]
j: 0%| | 0/10 [00:00<?, ?it/s]
j: 10%|█ | 1/10 [00:00<00:04, 1.94it/s]
j: 20%|██ | 2/10 [00:01<00:04, 1.94it/s]
j: 30%|███ | 3/10 [00:01<00:03, 1.96it/s]
j: 40%|████ | 4/10 [00:02<00:03, 1.96it/s]
j: 50%|█████ | 5/10 [00:02<00:02, 1.97it/s]
j: 60%|██████ | 6/10 [00:03<00:02, 1.97it/s]
j: 70%|███████ | 7/10 [00:03<00:01, 1.97it/s]
j: 80%|████████ | 8/10 [00:04<00:01, 1.98it/s]
j: 90%|█████████ | 9/10 [00:04<00:00, 1.98it/s]
j: 100%|██████████| 10/10 [00:05<00:00, 1.98it/s]
i: 20%|██ | 1/5 [00:05<00:20, 5.06s/it]
j: 0%| | 0/10 [00:00<?, ?it/s]
j: 10%|█ | 1/10 [00:00<00:04, 2.00it/s]
j: 20%|██ | 2/10 [00:01<00:04, 1.99it/s]
j: 30%|███ | 3/10 [00:01<00:03, 1.99it/s]
j: 40%|████ | 4/10 [00:02<00:03, 1.99it/s]
j: 50%|█████ | 5/10 [00:02<00:02, 1.99it/s]
j: 60%|██████ | 6/10 [00:03<00:02, 1.99it/s]
j: 70%|███████ | 7/10 [00:03<00:01, 1.99it/s]
j: 80%|████████ | 8/10 [00:04<00:01, 1.99it/s]
j: 90%|█████████ | 9/10 [00:04<00:00, 1.99it/s]
j: 100%|██████████| 10/10 [00:05<00:00, 1.99it/s]
i: 40%|████ | 2/5 [00:10<00:15, 5.05s/it]
为每个循环设置参数'position`‘也不能解决这个问题。
from tqdm import tqdm
import time
for i in tqdm(range(5), desc="i", colour='green', position=0):
for j in tqdm(range(10), desc="j", colour='red', position=1):
time.sleep(0.5)
如何使进度条在同一行中更新?
发布于 2020-11-07 11:29:53
解决方案是两倍的。
position
参数还设置了leave
参数。代码应该是这样的。我添加了ncols
,这样进度条就不会占用整个控制台。from tqdm import tqdm
import time
for i in tqdm(range(5), position=0, desc="i", leave=False, colour='green', ncols=80):
for j in tqdm(range(10), position=1, desc="j", leave=False, colour='red', ncols=80):
time.sleep(0.5)
现在运行代码时,控制台的输出如下所示。
i: 20%|████████▍ | 1/5 [00:05<00:20, 5.10s/it]
j: 60%|████████████████████████▌ | 6/10 [00:03<00:02, 1.95it/s]
更新发生在同一行。
发布于 2022-01-20 01:05:46
这里有一个同样适用于PyCharm SSH解释器的解决方案(我使用的是2021.3.1 (专业版),我没有“在输出控制台中模拟终端”的选项):
from tqdm.auto import tqdm
for i in tqdm(range(10), position=0, leave=True):
for index in tqdm(range(10), position=0, leave=True):
pass
https://stackoverflow.com/questions/64727187
复制相似问题