问题描述
对于我的论文,我正在尝试计算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