只是为了好玩,我试图在python中实现一些算法来计算pi。我设法用Gauss-Legendre算法做到了这一点,我感到很满意。尽管如此,Python进程仅使用一个内核(一个进程)。
这是我实现的主要部分:
from decimal import *
import math
import time
digit = 10000
getcontext().prec = digit+1
am, a, b, t, p = 0, 1, 1/Decimal(2).sqrt(), Decimal(1/4), 1
while am != a:
am, bm, tm, pm = a, b, t, p
a = Decimal((am+bm)/2)
b = Decimal(am*bm).sqrt()
t = Decimal(tm-pm*(am-a)**2)
p = 2*pm
pi = Decimal((a+b)**2/(4*t))
print(pi)
我想知道是否有可能将a,b,t,p的计算分配给每个进程。
我看过多进程文档,但看起来它仅适合诸如sum之类的迭代任务(例如Ramanujan算法)。
谢谢
您似乎可以轻松并行化为可以彼此独立运行的较小问题,这似乎并不是一个问题。您可以创建一个线程来分别执行每个线程,但是由于它们彼此依赖,因此您将无法并行计算它们(您必须等到a被计算出来之后,b依此类推) 。
因此,如果您以线程必须彼此等待的原始顺序运行它们,则与上面的顺序运行它们并没有什么不同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句