使用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.key
或y.key
,则与我提供的名称不符。这是预期的行为吗?
答案 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')