我最近从 netcdf4 切换到 iris 以在 Python 中读取 netcdf 文件(我使用的是 Python 2.7)。在许多方面,这改进了我的代码,但我在某些数据集上遇到了一些性能问题。使用 netcdf4 读取一些文件(不是全部)过去只需要几秒钟,而使用 iris 则需要一分钟或更多分钟。
这是我使用的一个简单测试。使用 netcdf4 进行第一次读取需要 4 秒,使用 iris 大约需要 90 秒!这大大降低了我的代码性能,因为我通常一次运行读取许多文件。
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))
有人发现了同样的行为吗?是不是我对 iris 做错了什么?