首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取grb2文件非常慢

读取grb2文件非常慢
EN

Stack Overflow用户
提问于 2020-11-05 15:41:39
回答 2查看 270关注 0票数 1

使用以下代码读取一个大约100兆字节的grb2文件需要5分钟:

代码语言:javascript
复制
import cfgrib
datasets = cfgrib.open_datasets(grib_path, backend_kwargs={'indexpath': ''})

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

EN

回答 2

Stack Overflow用户

发布于 2021-11-23 17:37:21

这实际上是一个恼人的问题,在这里被提出。对于12Mb的Grib文件,读取单个字段,cfgrib需要19秒,而使用pynio需要0.02秒!超过900倍!

ps : parallel = True作为结果给出: open_dataset()获得意外的关键字参数'parallel‘

使用pynio编写代码:

代码语言:javascript
复制
    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编写代码:

代码语言:javascript
复制
    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文件:

代码语言:javascript
复制
    filename = "gfswave.txxz.global.0p25.f000.grib2"

对于参数:组合风浪和涌浪的有效高度

代码语言:javascript
复制
    parameter = "HTSGW_P0_L1_GLL0"  # with pynio"
    parameter = "swh"               # corresponding parameter with cfgrib 
票数 1
EN

Stack Overflow用户

发布于 2020-11-17 18:03:22

您可以启用并行读取来提高读取速度:

代码语言:javascript
复制
import xarray
data = xarray.open_dataset(grib_path, engine='cfgrib', parallel=True)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64692977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档