2

我是尝试延迟延迟的新用户。我想使用延迟将函数和代码自动转换为延迟。但是,我发现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 不支持它?

4

1 回答 1

1

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

在您的特定示例中,我会将 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]
于 2017-06-08T11:50:19.377 回答