python - 如何跨多个调用将 dask-DAG 持久保存在分布式集群上并保留中间结果?

标签 python distributed dask

我尝试在分布式客户端的多次调用中提交dask-DAG,但无法在集群上保留中间结果。你能指出,我该如何解决这个问题吗?

from distributed import Client
c = Client()


dsk0 = {'a': 1, 'b': (lambda x: 2*x, 'a')}
keys0 = ['a', 'b']
futures0 = c._graph_to_futures(dsk0, keys0)
fb = futures0['b']
b = fb.result()  # Yields correctly 2

dsk1 = {'c': (lambda x: 3*x, 'a')}
keys1 = ['c']
futures1 = c._graph_to_futures(dsk1, keys1)
fc = futures1['c']
c = fc.result()  # Yields 'aaa', instead of 3

提前致谢!

马库斯

最佳答案

我建议使用dask.delayedclient.compute方法

from dask import delayed
from distributed import Client
client = Client()

a = delayed(1)
b = delayed(lambda x: 2 * x)(a)

a_future, b_future = client.compute([a, b])

>>> b_future.result()
2

c = delayed(lambda x: 3 * x)(a_future)
c_future = client.compute(c)

>>> c_future.result()
3

_graph_to_futures 这样直接处理图形的内部函数更容易出错,通常供内部使用。

关于python - 如何跨多个调用将 dask-DAG 持久保存在分布式集群上并保留中间结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41444462/

相关文章:

python - 如何在 Python 中验证 GraphQL 突变

python - 如何找到dask.delayed任务的输入?

language-agnostic - 分布式程序员缺少哪些工具?

c# - 使用不同随机数生成器的分布式计算

python - 使用 `dask.merge()` 时发生 key 错误

python - 并行化列表过滤

python - 为客户管理 Python 包的替代方案有哪些?

python - 如何将字符串转换为整数并将它们相加?

python - pandas 操作过程中的进度指示器

database - Riak 数据类型集排序键是否可靠