Dask Delayed 忽略因变量的名称

Dask Delayed ignores name for dependent variables

在使用 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,它们与我提供的名称不匹配。这是预期的行为吗?

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

您可以在定义延迟函数时而不是在调用它时指定您想要关联的键:

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