Dask 如何递归计算集合中的延迟
我是一个尝试dask延迟的新用户。我想使用delayed自动将函数和代码转换为delayed。但是,我发现delayed.compute并没有在集合中递归计算delayedDask 如何递归计算集合中的延迟,dask,dask-delayed,Dask,Dask Delayed,我是一个尝试dask延迟的新用户。我想使用delayed自动将函数和代码转换为delayed。但是,我发现delayed.compute并没有在集合中递归计算delayed 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.c
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不支持它?您是正确的,您不应该在其他延迟函数中使用延迟函数(除非您正在做一些非常奇怪的事情)。但是,您可以将延迟值传递给其他延迟函数 在你的例子中,我认为colls没有延误。您希望它立即确定要进行多少延迟的
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]
非常感谢。事实上,我想用dask.delayed做一些很酷很奇怪的事情。。。我想在代码库中添加delayed到包装器代码块,使Delayeds无处不在。。。然而,这是另一个话题。