读取grb2文件的速度非常慢



读取大约100兆字节的grb2文件需要5分钟,代码如下:

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

有没有什么方法或库可以让我更快地读取这些文件?

这实际上是一个令人讨厌的问题。对于12Mb Grib文件,读取单个字段需要19秒,而pynio需要0.02秒!超过900倍!

ps:palallel=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(NOADS(中的grid2文件:

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_mfdataset(grib_path, engine='cfgrib', parallel=True)

相关内容

  • 没有找到相关文章

最新更新