使用以下代码读取一个大约100兆字节的grb2文件需要5分钟:
import cfgrib
datasets = cfgrib.open_datasets(grib_path, backend_kwargs={'indexpath': ''})有没有什么方法或库可以让我更快地读取这些文件?
发布于 2021-11-23 17:37:21
这实际上是一个恼人的问题,在这里被提出。对于12Mb的Grib文件,读取单个字段,cfgrib需要19秒,而使用pynio需要0.02秒!超过900倍!
ps : parallel = True作为结果给出: open_dataset()获得意外的关键字参数'parallel‘
使用pynio编写代码:
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))例如,如果您尝试使用来自GFS-wave (NOMADS)的grib2文件:
filename = "gfswave.txxz.global.0p25.f000.grib2"对于参数:组合风浪和涌浪的有效高度
parameter = "HTSGW_P0_L1_GLL0" # with pynio"
parameter = "swh" # corresponding parameter with cfgrib 发布于 2020-11-17 18:03:22
您可以启用并行读取来提高读取速度:
import xarray
data = xarray.open_dataset(grib_path, engine='cfgrib', parallel=True)https://stackoverflow.com/questions/64692977
复制相似问题