我是一个尝试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不支持它?
答案 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]