Dask是否支持自定义图形中具有多个输出的函数?

时间:2016-07-15 22:30:06

标签: python dask

Custom GraphsDask API似乎只支持返回一个输出键/值的函数。

例如,以下依赖项无法轻松表示为Dask图:

    B -> D
   /      \
A-         -> F
   \      /
    C -> E

这可以通过将元组存储在“复合”键下(例如,在这种情况下为“B_C”)然后将其分割为getitem()或类似来解决。但是,这可能导致执行效率低下(例如,不必要的序列化)并降低DAG可视化的清晰度。

有更好的方法还是目前不支持?

1 个答案:

答案 0 :(得分:3)

简短回答

不,但没关系。

编程接口

你是正确的,使用Dask管理多个输出的正确方法是使用getitem。在编程接口方面,使用dask.delayed执行此操作的标准方法是使用getitem,如您所建议的那样。这是一个例子:

from dask import delayed

@delayed(pure=True)
def minmax(a, b):
    if a > b:
        return a, b
    else:
        return b, a

result = minmax(1, 2)
min, max = result[0], result[1]

性能

你提出了一个关于表现的有趣问题。在实践中使用distributed scheduler(在单个机器上运行良好)应该处理这种情况,没有性能损失。单机线程调度程序也是如此。