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()
Вы можете увидеть визуализацию здесь (я не могу встраивать изображения), но вместо "avg_result" я вижу "calc_avg-#0" и вместо того, чтобы видеть "ratio_result", я вижу "calc_ratio-#1". Если я смотрю на x.key
или же y.key
они не совпадают с именами, которые я предоставил. Это ожидаемое поведение?
1 ответ
Ключ результата dask должен быть уникальным для каждой комбинации функции, которая была задержана, и вводимых вами данных. Вы видите выше ожидаемое поведение: вы называете функцию, но вызов с другими входами будет ожидать другого выхода, поэтому ключ должен быть другим.
Вы можете указать ключ, который вы хотите связать не при определении отложенной функции, а при ее вызове:
x = delayed(calc_avg)(a, b, dask_key_name='avg_result')
y = delayed(calc_ratio)(x, c, dask_key_name='ratio_result')