如何找到 dask.delayed 任务的输入?
How to find inputs of dask.delayed task?
给定一个 dask.delayed
任务,我想获取该任务的所有输入 (parents) 的列表。
例如,
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
的 parents 以便它产生 [inc#1, inc#2, inc#3]
的列表?
延迟对象不存储对其输入的引用,但是如果您愿意深入研究任务图并手动重建延迟对象,您可以取回这些。
特别是您可以使用延迟对象的键
索引到 .dask
属性
>>> task.dask[task.key]
(<function sum>,
['inc-9d0913ab-d76a-4eb7-a804-51278882b310',
'inc-2f0e385e-beef-45e5-b47a-9cf5d02e2c1f',
'inc-b72ce20f-d0c4-4c50-9a88-74e3ef926dd0'])
这显示了任务定义(参见 Dask 的 graph specification)
'inc-...'
值是任务图中的其他键。您可以使用 dask.core.get_dependencies
函数
获取依赖项
>>> 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'}
如果您愿意,您可以从这里创建新的延迟对象
>>> 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')]
给定一个 dask.delayed
任务,我想获取该任务的所有输入 (parents) 的列表。
例如,
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
的 parents 以便它产生 [inc#1, inc#2, inc#3]
的列表?
延迟对象不存储对其输入的引用,但是如果您愿意深入研究任务图并手动重建延迟对象,您可以取回这些。
特别是您可以使用延迟对象的键
索引到.dask
属性
>>> task.dask[task.key]
(<function sum>,
['inc-9d0913ab-d76a-4eb7-a804-51278882b310',
'inc-2f0e385e-beef-45e5-b47a-9cf5d02e2c1f',
'inc-b72ce20f-d0c4-4c50-9a88-74e3ef926dd0'])
这显示了任务定义(参见 Dask 的 graph specification)
'inc-...'
值是任务图中的其他键。您可以使用 dask.core.get_dependencies
函数
>>> 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'}
如果您愿意,您可以从这里创建新的延迟对象
>>> 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')]