3

我正在尝试重写一个用类开发的整个项目。渐渐地,最重的计算块应该被并行化,显然我们有很多独立的顺序循环。模仿行为的类的一个例子是这个玩具问题(我是一个痴迷于 p-sum 的数学家):

class Summer:
    def __init__(self, p):
        self.p = p
    def sum(self):
        return sum(pow(i,-self.p) for i in range(1,1000000))

total = sum([Summer(p).sum() for p in range(2,20)])

如果我将最后一行替换为:

from dask.distributed import Client
def psum(p): return Summer(p).sum()
client = Client()
A = client.map(psum,range(2,20))
total=client.submit(sum,A).result()

我的运行时间减少了 4(我的机器上可用的内核数)。如果我使用数据密集型的真实类(大熊猫结构占用内存),这种理想行为不会持续存在。是否有 dask.distributed 的推荐替代方案?我看到严重的减速,我将其归因于传递的数据。

4

0 回答 0