使用dask监视xarrays split,apply,combin的进度

问题描述

对于我的论文,我正在尝试计算SLOM分数(请参见https://link.springer.com/article/10.1007/s10115-005-0200-2)。 该分数纯粹是空间分数,我正在尝试为较大的数据集计算分数。 (一年以上)。

到目前为止,我创建了一个函数来计算每个时间步的SLOM分数,该函数返回一个包含SLOM值的xarray数据数组。

我正在尝试计算每个时间步长的SLOM值。

当前,我正在使用groupby进行此操作:拆分应用合并策略(http://xarray.pydata.org/en/stable/groupby.html

grouped_by_time = xrDS.groupby("time")
xrDS["SLOM"]=grouped_by_time.apply(slom_per_timeslice)

为了加快处理过程,我尝试通过将数据作为daskarray加载来使用xarray内置的dask功能

xrDS = xr.open_dataset(data_path+file_name,chunks={"lat":-1,"lon":-1,"time": "auto"})

根据第一句话:http://xarray.pydata.org/en/stable/dask.html#using-dask-with-xarray

,我认为apply函数应该与daskarrays一起使用

现在我的问题是如何监视groupedby.apply函数的进度? 我尝试使用dask进度栏:

from dask.diagnostics import ProgressBar

with ProgressBar():
  xrDS["SLOM"]=grouped_by_time.apply(slom_per_timeslice)

给出以下输出

[########################################] | 100% Completed |  0.1s
[########################################] | 100% Completed |  0.1s
[########################################] | 100% Completed |  0.1s
[########################################] | 100% Completed |  0.1s
[########################################] | 100% Completed |  0.1s
[########################################] | 100% Completed |  0.1s
[########################################] | 100% Completed |  0.1s
[########################################] | 100% Completed |  0.1s
[########################################] | 100% Completed |  0.1s

数百次。

那我如何正确查看整体计算的进度?

请注意,我正在个人台式机上的Jupyter笔记本上进行小型测试,并在研究小组的计算机上进行较大的运行。我只有ssh可以访问这台机器。 两种情况都是单机,因此我认为简单的认多线程调度程序就足够了。

我已经看过了dask仪表板,但是仅使用ssh访问该怎么办?

解决方法

您可以使用client = distributed.Client()来设置将适用于仪表板的群集。参见https://distributed.dask.org/en/latest/quickstart.html#setup-dask-distributed-the-easy-way