0

在使用创建计算图时,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()

您可以在此处看到可视化(我无法嵌入图像),但我看到的不是“avg_result”,而是“calc_avg-#0”,而不是“ratio_result”,我看到的是“calc_ratio-#1”。如果我查看x.keyy.key它们与我提供的名称不匹配。这是预期的行为吗?

4

1 回答 1

0

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

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

x = delayed(calc_avg)(a, b, dask_key_name='avg_result')
y = delayed(calc_ratio)(x, c, dask_key_name='ratio_result')
于 2017-08-29T20:37:14.927 回答