Python 使用dask保留中间数据帧计算

Python 使用dask保留中间数据帧计算,python,dask,Python,Dask,在执行昂贵的计算时,是否有方法指示dask保留中间值 在下面的示例中,我希望dask保留在计算d['d']时创建的中间列d['c'] 然而,在我的实验中,它似乎每次都在计算d['c']。有没有办法让达斯克把d['c']留在某个地方?这种工作流程的最佳实践是什么?我计划创建许多中间列,用于后续的许多计算,不希望每次都从头开始计算。还是我的理解完全错误?同时调用多个结果 您可以同时调用许多东西上的compute来共享中间结果 dask.compute(d.min(), d.max()) 使用per

在执行昂贵的计算时,是否有方法指示dask保留中间值

在下面的示例中,我希望dask保留在计算d['d']时创建的中间列d['c']

然而,在我的实验中,它似乎每次都在计算d['c']。有没有办法让达斯克把d['c']留在某个地方?这种工作流程的最佳实践是什么?我计划创建许多中间列,用于后续的许多计算,不希望每次都从头开始计算。还是我的理解完全错误?

同时调用多个结果 您可以同时调用许多东西上的compute来共享中间结果

dask.compute(d.min(), d.max())
使用persist将数据保存在内存中 您可以使用.persist方法或dask.persist。。。函数计算结果,但将其作为dask集合保留

d['c'] = d['a'] * d['b']
d['d'] = (d['c'] + 1).persist()

机会缓存 如果您使用的是第一代单机调度器,那么您可以使用机会主义缓存。有关更多信息,请参阅

d['c'] = d['a'] * d['b']
d['d'] = (d['c'] + 1).persist()
d['c'] = d['a'] * d['b']
d['d'] = d['c'] + 1
d = d.persist()