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

Is there a TQDM like module for creating progress bars for recursion?

我正在 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))

一个解决方案是使用 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)