为什么使用多重处理计算阶乘比使用递归慢?

问题描述 投票:0回答:0

我正在尝试找到一种更快的计算阶乘的方法。 在下面的代码中,我首先使用递归方法,然后使用另一种方法,将整个操作分成更小的计算,然后并行运行它们。

这是我的代码:

#!/usr/bin/env python3
import time 
from multiprocessing import Pool
import itertools
def fact(n):
    if n==1:
        return 1
    else:
        a=n*fact(n-1)
        return a

def divid(start ,end):
    m=1
    for i in range(start,end+1):
        m=m*i
    return m

pool=Pool()

a=time.time()
res=fact(100)
print (res)
print ("Time spent calculating factorial",(time.time()-a)*60)

a=time.time()
L = pool.starmap(divid,[(1,25),(26,50),(51,75),(76,100)] )

m=1
for i in list(L):
    m=m*i
print ("Result is",m)

print("Time spent calculating factorial using multiprocessing",(time.time()-a)*60)

因此,运行阶乘(100)的代码,我发现递归方法比使用多处理快 2 倍。

python python-3.x multiprocessing
© www.soinside.com 2019 - 2024. All rights reserved.