1

我有一个递归调用自身的函数。这是一个例子:

def f(a,b=0):
    if b < 5:
        for i in range(10):
            a += f(a+i,b+1)
    return a+b

print f(3)

现在我想在函数内部同时运行 10 个函数调用,每个调用都在一个单独的线程中,但同时从一个变量中获取所有返回。

有人能引导我走向正确的方向吗?

4

1 回答 1

4

尝试更准确地考虑您希望多线程如何工作。

您提出问题的方式表明您希望为每个递归函数调用生成 10 个线程。这意味着在单级递归之后,您将拥有 100 个线程,在 2 级之后,您将拥有 1000 个线程,依此类推。除非您尝试冻结操作系统,否则这可能不是您想要的。

两种选择包括:

  1. 仅在第一次调用时产生线程,而不是在递归调用时产生线程,或者
  2. 创建线程池并使用工作队列

另一种方法是考虑函数正在完成的数学运算并对其进行分析简化以避免循环和/或递归。

于 2013-01-26T21:08:02.617 回答