2017-06-08 22 views
2

私はdaskを試してみる新しいユーザーです。 Delayedに関数とコードを自動的に変換するために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

遅延関数を他の遅延関数内で使用しないでください(非常に奇妙なことをしない限り)。ただし、遅延値を他の遅延関数に渡すこともできます。

あなたの具体的な例では、私はコルを遅延させないようにします。あなたは即座にどれくらい多くの遅れが発生するかを決定したいと思っています。一般的には、あなたのタスクグラフを構築し、ちょうど機能するすべての機能を遅らせるコードをすぐに呼びたいと思っています。

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] 
+0

ありがとうございます。実際には、dask.delayedを使ってクールで奇妙なことをしたいと思っています...私は遅れをどこにでも作るために、コードベースのラッパーコードブロックに遅れを加えたいと思っています...しかし、別の話題です。 –

関連する問題