输出中的进度条取决于Python中的计算进度

时间:2018-05-18 11:28:31

标签: python progress-bar

如果我们假设以下代码是一个庞大而复杂的代码并且持续数分钟或数小时,并且我们想要通知用户代码有多少百分比通过,我该怎么办?

num=1

for i in range(1,100000):
    num=num*i
print(num)

我想通过进度条通知用户,类似于安装某些内容。 我检查了here,但根据我的代码进展,我不明白如何编写进度条。

在类似于上述链接的示例中,它们定义了睡眠或延迟时间。这是不可接受的。因为我们不知道Python在具有不同功能的不同代码中的计算时间。

1 个答案:

答案 0 :(得分:0)

如果您的索引i与您的实际进度相对应,则tqdm包是一个不错的选择。一个简单的例子:

from tqdm import tqdm
import time

for i in tqdm(range(1000)):
    time.sleep(0.01)  # sleep 0.01s

输出:

1%|          | 1010/100000 [00:10<16:46, 98.30it/s]

编辑:如果进度未知,进度条也可以使用。

def loop_without_known_length():
    # same as above, but the length is not known outside of this function.
    for i in range(1000):
        yield i

for i in tqdm(loop_without_known_length()):
    time.sleep(0.01)

输出:

60it [00:00, 97.23it/s]