Dask Delayed忽略因变量的名称

时间:2017-08-29 13:16:54

标签: dask dask-delayed

使用delayed创建计算图时,我正在尝试分配名称,这样如果我将图形可视化,它就是可读的。但是,对于依赖于函数的延迟变量,name参数似乎不会影响密钥。这是一个玩具示例:

def calc_avg(a, b):
    return pd.concat([a, b], axis=1).mean(axis=1)

def calc_ratio(a, b):
    return a / b

a = delayed(pd.Series(np.random.rand(10)), name='a')
b = delayed(pd.Series(np.random.rand(10)), name='b')
c = delayed(pd.Series(np.random.rand(10)), name='c')

x = delayed(calc_avg, name='avg_result')(a,b)
y = delayed(calc_ratio, name='ratio_result')(x,c)

y.visualize()

You can see the visualization here(我无法嵌入图片),但是我没有看到'avg_result',而是看到'calc_avg-#0',而不是看'ratio_result',我看到'calc_ratio-#1'。如果我查看x.keyy.key,则与我提供的名称不符。这是预期的行为吗?

1 个答案:

答案 0 :(得分:0)

对于延迟函数的每个组合以及您给出的输入,dask结果的键必须是唯一的。您在上面看到的是预期的行为:您正在命名该函数,但是使用不同输入的调用会产生不同的输出,因此密钥必须不同。

您可以在定义延迟功能时指定您想要关联的键,但是当您调用它时:

x = delayed(calc_avg)(a, b, dask_key_name='avg_result')
y = delayed(calc_ratio)(x, c, dask_key_name='ratio_result')