2017-12-01 8 views
1

dask.delayedというタスクがある場合、そのタスクのすべての入力(親)のリストを取得したいと考えています。例えばdask.delayedタスクの入力を見つける方法は?

from dask import delayed 

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

def inc_list(x): 
    return [inc(n) for n in x] 

task = delayed(sum)(inc_list([1,2,3])) 
task.parents ??? 

は、以下のグラフが得られます。私はsum#3の親を得て、[inc#1, inc#2, inc#3]のリストを得ることができますか?

enter image description here

答えて

1

遅延オブジェクトを使用すると、タスクグラフにビットを喜んで発掘をしている場合しかし、あなたが戻ってこれらを取得することができますし、手動で遅れたオブジェクトを再構築し、それらの入力への参照を格納しないでください。特に

することができます。これは、タスク定義を示し

>>> task.dask[task.key] 
(<function sum>, 
['inc-9d0913ab-d76a-4eb7-a804-51278882b310', 
    'inc-2f0e385e-beef-45e5-b47a-9cf5d02e2c1f', 
    'inc-b72ce20f-d0c4-4c50-9a88-74e3ef926dd0']) 

キー遅れたオブジェクトのは

'inc-...'値タスクグラフ内の他の鍵である(DASKのgraph specification参照)と.dask属性へのインデックス。あなたは

>>> from dask.core import get_dependencies 
>>> get_dependencies(task.dask, task.key) 
{'inc-2f0e385e-beef-45e5-b47a-9cf5d02e2c1f', 
'inc-9d0913ab-d76a-4eb7-a804-51278882b310', 
'inc-b72ce20f-d0c4-4c50-9a88-74e3ef926dd0'} 

dask.core.get_dependencies機能を使用して依存関係を取得することができますし、

>>> from dask.delayed import Delayed 
>>> parents = [Delayed(key, task.dask) for key in get_dependencies(task.dask, task.key)] 
[Delayed('inc-b72ce20f-d0c4-4c50-9a88-74e3ef926dd0'), 
Delayed('inc-2f0e385e-beef-45e5-b47a-9cf5d02e2c1f'), 
Delayed('inc-9d0913ab-d76a-4eb7-a804-51278882b310')] 
をご希望の場合は、ここから新しい遅れたオブジェクトを作ることができます
関連する問題