Серия из около 90 файлов netCDF каждый размером около 27 МБ каждый, открытая с помощью xarray open_mfdataset, занимает много времени для загрузки небольшого пространства-времени.
Размеры порции дают незначительный выигрыш. decode_cf = True либо внутри функции, либо отдельно, также не имеет различий. Другое предложение здесь https://groups.google.com/forum/#!topic/xarray/11lDGSeza78 заставило меня сохранить выделение как отдельный netCdf и перезагрузить его.
Кажется узким местом, когда часть dask должна выполнять какую-то работу (загрузка, вычисления, преобразование в фрейм данных pandas).
Создание графика с помощью dask.visualize создает огромное изображение. Возможно, это нам что-то говорит, но я не знаю, как интерпретировать.
wind = xr.open_mfdataset(testCCMPPath,\
decode_cf=True,\
chunks={'time': 100,\
'latitude': 100,\
'longitude': 100})
%timeit wind.sel(latitude=latRange, longitude=windLonRange, time=windDateQueryRange).load()
wxr = wind.sel(latitude=latRange, longitude=windLonRange, time=windDateQueryRange)
df = wxr.to_dataframe()
print(df.shape)
вывод времени показывает
1,93 с ± 29,8 мс на цикл (среднее ± стандартное отклонение из 7 циклов, по 1 циклу каждый)
df.shape вывод только 164x3.
У меня есть аналогичное значение sel для другого массива xr, и я получаю время около 0,05 секунды, однако это имеет много разреженных точек. В массиве wind xr мало пустых мест.