Python 为什么使用多处理计算阶乘要比使用递归慢?
我正试图找到一种更快的方法来计算阶乘。 在下面的代码中,我首先使用递归方法,然后使用另一种方法,将整个操作划分为较小的计算,然后并行运行它们 这是我的密码:Python 为什么使用多处理计算阶乘要比使用递归慢?,python,python-3.x,multiprocessing,Python,Python 3.x,Multiprocessing,我正试图找到一种更快的方法来计算阶乘。 在下面的代码中,我首先使用递归方法,然后使用另一种方法,将整个操作划分为较小的计算,然后并行运行它们 这是我的密码: #!/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) re
#!/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)
因此,为factorial(100)运行这段代码时,我发现递归方法比使用多处理快2倍。您的任务太小,无法补偿多处理的成本。最可能的原因是,通过函数调用本身进行操作比启动、管理,以及从多个过程中收集结果。