首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >tqdm -在PyCharm中具有嵌套for循环的多个进度条

tqdm -在PyCharm中具有嵌套for循环的多个进度条
EN

Stack Overflow用户
提问于 2020-11-07 11:29:53
回答 2查看 7.5K关注 0票数 14

下面的问题是针对使用PyCharm的人。有嵌套的for循环,tqdm用于对应于每个for循环的进度条。代码如下所示。

代码语言:javascript
运行
复制
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)

但问题是,内部循环的进度条每次都出现在换行符中,如下所示。

代码语言:javascript
运行
复制
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`‘也不能解决这个问题。

代码语言:javascript
运行
复制
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)

如何使进度条在同一行中更新?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-07 11:29:53

解决方案是两倍的。

  1. 转到“编辑配置”。单击正在使用的运行/调试配置。应该有一个选项“在输出控制台中模仿终端”。看看那个。图像添加以供参考。

  1. position参数还设置了leave参数。代码应该是这样的。我添加了ncols,这样进度条就不会占用整个控制台。

代码语言:javascript
运行
复制
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)

现在运行代码时,控制台的输出如下所示。

代码语言:javascript
运行
复制
i:  20%|████████▍                                 | 1/5 [00:05<00:20,  5.10s/it]
j:  60%|████████████████████████▌                | 6/10 [00:03<00:02,  1.95it/s]

更新发生在同一行。

票数 18
EN

Stack Overflow用户

发布于 2022-01-20 01:05:46

这里有一个同样适用于PyCharm SSH解释器的解决方案(我使用的是2021.3.1 (专业版),我没有“在输出控制台中模拟终端”的选项):

代码语言:javascript
运行
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64727187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档