如何递归计算集合中的延迟

时间:2017-06-08 06:16:58

标签: dask dask-delayed

我是一个尝试dask延迟的新用户。我想使用延迟来自动将函数和代码转换为Delayed。但是,我发现delayed.compute没有递归计算集合中的延迟...

from dask import delayed, base

@delayed
def inc(x):
    return x + 1

@delayed
def colls(ind):
    return [inc(i) for i in xrange(ind)]


data2 = colls(2)
data2.compute() # I expect [1, 2], but get [Delayed('inc-...'),
 Delayed('inc-...')]

我是否遗漏任何使其正常工作的事情或Dask.delayed不支持它?

1 个答案:

答案 0 :(得分:1)

你是正确的,你不应该在其他延迟函数中使用延迟函数(除非你做了一些非常奇怪的事情)。但是,您可以将延迟值传递给其他延迟函数。

在你的特定例子中,我会将歌词保留为不延迟。您希望它立即确定要进行的延迟inc次呼叫。通常,您希望立即调用构建任务图的任何代码,并延迟任何正常工作的函数。

from dask import delayed, compute

@delayed
def inc(x):
    return x + 1

def colls(ind):
    return [inc(i) for i in xrange(ind)]


data2 = colls(2)
compute(data2)
# [1, 2]