我有以下功能
@dask.delayed
def load_ds(p):
import xarray as xr
multi_file_dataset = xr.open_mfdataset(p, combine='by_coords', concat_dim="time", parallel=True)
mean = multi_file_dataset['tas'].mean(dim='time')
return mean
这将打开一组NetCDF文件(由路径p标识),并计算一段时间内的平均值。
我试图在两个不同的路径(=数据集)上并行运行该函数:
results = []
result1 = dask.delayed(load_ds)(path1)
results.append(result1)
result2 = dask.delayed(load_ds)(path2)
results.append(result2)
results = dask.compute(*results)
我也尝试过
results = []
result1 = dask.delayed(load_ds)(path1)
results.append(result1)
result2 = dask.delayed(load_ds)(path2)
results.append(result2)
futures = dask.persist(*results)
results = dask.compute(*futures)
但是,我注意到当我尝试检索结果时实际上开始执行:
print(results[0].values)
再一次,当我检索第二个
print(results[1].values)
怎么了?有没有办法只检索一次结果对象?
鉴于您到目前为止所做的一切,该如何处理:
delayed_task = dask.delayed(
lambda L: (L[0].values, L[1].values)
)(results)
而“后”,
tup = delayed_task.compute()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句