Чтение файлов grb2 происходит очень медленно

Чтение файла grb2 размером около 100 мегабайт занимает у меня 5 минут со следующим кодом:

import cfgrib
datasets = cfgrib.open_datasets(grib_path, backend_kwargs={'indexpath': ''})

Есть ли способ или библиотека, с помощью которых я могу быстрее читать эти файлы?

2 ответа

на самом деле это раздражающая проблема, которая поднимается здесь. С 12-мегабайтным файлом Grib чтение одного поля cfgrib занимает 19 секунд по сравнению с 0,02 секунды с помощью pynio! более чем в 900 раз больше!

ps: parallel = True дает результат: open_dataset() получил неожиданный аргумент ключевого слова «parallel»

Код с пинио:

          import time
    import Nio
    import xarray as xr
    start = time.time()

    filename  = "full_path_to_the_grb2_file"
    parameter = "parameter_name"
    ds  = xr.open_dataset(filename, engine="pynio")
    var = ds.get(parameter)
    end = time.time()
    print("Elapsed time = ", round(end-start,5))

Код с cfgrib:

          import time
    import cfgrib
    import xarray as xr
    start = time.time()

    filename  = "full_path_to_the_grb2_file"
    parameter = "parameter_name"
    start = time.time()
    ds = xr.open_dataset(filename, engine="cfgrib", backend_kwargs={"indexpath":""}) 
    var = ds.get(parameter)
    end = time.time()
    print("Elapsed time = ", round(end-start,5))

Например, если вы попытаетесь использовать файл grib2 из GFS-wave (NOMADS):

          filename = "gfswave.txxz.global.0p25.f000.grib2"

для параметра : Значительная высота комбинированного ветрового волнения и зыби

          parameter = "HTSGW_P0_L1_GLL0"  # with pynio"
    parameter = "swh"               # corresponding parameter with cfgrib 

Вы можете активировать параллельное чтение, чтобы увеличить скорость чтения:

import xarray
data = xarray.open_dataset(grib_path, engine='cfgrib', parallel=True)
Другие вопросы по тегам