在不重新创建图形的情况下更改 dask 延迟输入

Changing dask delayed inputs without recreating graph

我对一些数据进行了一系列计算,我将这些数据建模为延迟了 dask 的图形,并且效果很好,但是创建图形本身比计算 运行.

我整天都在添加数据,所以希望能够在不重新创建图表的情况下更改输入,有没有办法做到这一点?

这是一个高级主题,所以我将只提供一个有点 hacky 的解决方案:

import dask
from dask.multiprocessing import get

@dask.delayed()
def myfunc(x):
    return x+1

nested = 0
for x in range(1, 3):
    nested = myfunc(x*nested, dask_key_name=f'{x}')

# 1*0 + 1 = 1 -> 2*1 + 1 = 3
print(nested.compute())

dag_modified = nested.dask.to_dict()
dag_modified['1'] = modified_dag['1'][0], 2

# 1*2 + 1 = 3 -> 2*3 + 1 = 7
print(get(dag_modified, '2'))