使用多个进程在python中计算pi

时间:2015-12-11 12:00:29

标签: python algorithm python-multiprocessing

为了好玩,我试图在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的计算。

我查看了多进程文档,但看起来它只适用于sums等迭代任务(例如Ramanujan算法)。

由于

1 个答案:

答案 0 :(得分:2)

您可以轻松地将其并行化为可以彼此独立运行的较小问题,这似乎不是一个问题。您可以创建一个线程来单独执行每个线程,但是您无法并行计算它们,因为它们彼此依赖(您必须等待在b之前计算a等等) 。

因此,如果你按照线程必须等待的原始顺序运行它们,那么它与按照上面的顺序顺序运行它们并没有什么不同。