使用多个进程计算 python 中的圆周率

Calculate pi in python using multiple processes

只是为了好玩,我正在尝试在 python 中实施一些算法来计算圆周率。我设法用 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 的计算。

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

谢谢

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

因此,如果您 运行 以线程必须相互等待的原始顺序对它们进行排序,那么这与按顺序 运行 对它们进行排序并没有什么不同以上。