递归函数值生成器的多处理



>我有一个简单的递归函数和它的值生成器:

def rec(n):
    if n == 1:
        return 1
    else:
        return n + rec(n-1)
lis=[]    
for i in range(1,1000):
    lis.append(rec(i))

输出:

[1, 3, 6, 10, 15, 21, 28, 36,...]

在这样的结构中可以使用多处理吗?

你在这里描述的是一个干净的 map:你将值的可迭代对象映射到值列表,使得原始列表中的x i映射到结果中的f(x i(。

我们可以将其与Pool一起使用:

from multiprocessing import Pool
def rec(n):
    if n == 1:
        return 1
    else:
        return n + rec(n-1)
pool = Pool(4)
lis = pool.map(rec, range(1,1000))

这里4是处理请求的进程数。通常,这是一个或多个内核(或内核数量的倍数(。

但请注意,在您的情况下,您可以将 rec 函数替换为:

# fast implementation
def rec(n):
    return n*(n+1)//2

相关内容

  • 没有找到相关文章

最新更新