是否有类似 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)
我正在 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)