异步Xarray写入Zarr

时间:2019-12-10 17:20:46

标签: dask python-xarray zarr

全部。我正在使用Dask分布式集群在循环内编写Zarr + Dask支持的Xarray数据集,并且dataset.to_zarr正在阻塞。当有散乱的块阻止循环的继续时,这确实可以减慢速度。是否有一种异步进行.to_zarr的方法,以便循环可以继续下一次数据集的写入而不会被几个散乱的块阻止?

1 个答案:

答案 0 :(得分:2)

使用分布式调度程序,您无需任何特殊工作即可获得异步行为。例如,如果您正在做arr.to_zarr,那么实际上您将要等待完成。但是,您可以执行以下操作:

client = Client(...)
out = arr.to_zarr(..., compute=False)
fut = client.compute(out)

这将返回未来fut,其状态反映了整个计算的当前状态,您可以选择是等待还是继续提交新工作。您还可以将其显示在进度条上(在笔记本中),只要内核不忙,该进度条就会异步更新。