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

FAT*_*YEV 3 python recursion progress-bar tqdm

我正在用 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
Run Code Online (Sandbox Code Playgroud)

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

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

progress_bar(factorial(1000))
Run Code Online (Sandbox Code Playgroud)

And*_*ely 5

一种解决方案是使用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)
Run Code Online (Sandbox Code Playgroud)