避免在Dask中重新计算相同的值?

时间:2017-01-26 20:17:47

标签: python distributed dask

我希望在下面的代码中,第一个计算需要3 +秒,第二个计算要快得多。我该怎么做才能让dask避免重新对客户端进行计算? (我之前搜索过这个问题的答案,关于pure = True并且没有找到任何东西)

from dask import delayed, compute
from dask.distributed import Client

@delayed(pure=True)
def foo(a):
    time.sleep(3)
    return 1

foo_res = foo(1)

client = Client()

import time
t1 = time.time()
results = compute(foo_res, get=client.get)
t2 = time.time()
print("Time : {}".format(t2-t1))


t1 = time.time()
results = compute(foo_res, get=client.get)
t2 = time.time()
print("Time : {}".format(t2-t1))

输出:

Time : 3.01729154586792
Time : 3.0170397758483887

1 个答案:

答案 0 :(得分:2)

您需要在客户端上使用persist方法

foo_res = client.persist(foo_res)

这将在后台开始计算并将结果保留在内存中,只要在Python会话中对foo_res有一些引用

相关文档页面位于:http://distributed.readthedocs.io/en/latest/manage-computation.html