是否有类似TQDM的模块用于创建递归进度条?

问题描述 投票:0回答:1

我正在用python编写分支定界算法,并试图有效地显示进度。该算法使用递归,我想不出任何方法进行迭代。我想知道是否有一个类似tqdm的递归函数模块,或者至少是一种实现带有递归函数的进度条的方法?例如,如果我使用tqdm模块在python中编写迭代阶乘函数,则可以执行以下操作:

import tqdm

def factorial(n):
    end_product = 1
    for i in tqdm(range(1, n)):
        end_product *= i
    return end_product

我将如何在这样的递归函数上实现进度条:

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)

progress_bar(factorial(1000))
python recursion progress-bar tqdm
1个回答
0
投票

一种解决方案是使用total=参数初始化进度条,然后在每次递归调用中都调用.update()方法。

仅此行:

from time import sleep
from tqdm import tqdm

def factorial(n, bar):
    bar.update(1)
    sleep(0.01)  # slow-down things a little bit
    if n == 1:
        return 1
    else:
        return n * factorial(n-1, bar)

n = 500
bar = tqdm(total=n)
factorial(n, bar=bar)
© www.soinside.com 2019 - 2024. All rights reserved.