首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python-iris在读取netcdf数据集时执行速度非常慢

Python-iris在读取netcdf数据集时执行速度非常慢
EN

Stack Overflow用户
提问于 2019-05-31 22:21:52
回答 1查看 308关注 0票数 0

我最近从netcdf4转到了iris,以便在Python中读取netcdf文件(我使用的是Python2.7)。在许多方面,这改进了我的代码,但我在一些数据集上遇到了一些性能问题。使用netcdf4读取某些文件(不是所有文件)只需要几秒钟,而使用iris则需要一分钟或几分钟。

这是我使用的一个简单的测试。使用netcdf4第一次读取需要4秒,使用虹膜大约需要90秒!这会显著降低我的代码性能,因为我通常会在一次运行中读取许多文件。

代码语言:javascript
复制
from datetime import datetime
import iris
import netCDF4 as nc

nr = 3
ifile = 'myfile.nc'

print('IRIS read\n')
for i in range(nr):
    t1 = datetime.now()
    fh = iris.load(ifile)
    data = fh[0].data
    t2 = datetime.now()

    diff = (t2-t1).total_seconds()
    print('Data loaded in {:8.3f} s\n'.format(diff))

print('NetCDF read\n')
for i in range(nr):
    t1 = datetime.now()
    fh = nc.Dataset(ifile, mode='r')
    data = fh.variables.values()[-1][:]
    t2 = datetime.now()

    diff = (t2-t1).total_seconds()
    print('Data loaded in {:8.3f} s\n'.format(diff))

有没有人发现了同样的行为?是不是我对爱丽丝做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-06-05 19:31:54

要记住的一件事是,在这种情况下,iris实际上比netCDF4做了更多的工作。这是因为它知道CF约定,会自动识别坐标(包括维度和辅助坐标),并从文件中读取大量元数据,以生成一个很好的立方体,它不仅给你提供裸数据,而且让你能够真正理解它。

因此,iris案例中的fh内容与netCDF4案例中的内容完全不同。当我在测试文件上运行您的程序并在两种情况下打印data时,纯netCDF4实际上提供了一些坐标数据(在我的例子中是1D纬度),而不是实际的数据。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56396847

复制
相关文章

相似问题

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