使用xarray打开netcdf文件时如何禁用缓存?

时间:2017-08-03 13:00:30

标签: python caching performance-testing netcdf python-xarray

我正在尝试设置性能测试来执行具有不同分块配置的netcdf文件的重复读取,以最终确定特定用例的最佳块大小。我遇到的一个问题是,当使用 xarray.open_dataset()读取文件时,即使缓存设置为False,它仍然以某种方式将缓存存储在内存中。我知道这是基于两个指标的情况:

  • 第一次运行时读数总是很慢。
  • 使用RamMap应用程序,我发现即使数据集关闭后,打开的文件仍在内存中。

以下是我运行的代码:

ds = xr.open_dataset("path/to/netcdf/file", engine='h5netcdf', cache=False)

lat_dim = 2160
lon_dim = 4320
time_dim = 46
read_chunk_size = 2160

data = np.empty((time_dim, lat_dim, lon_dim))
data[0:time_dim, 0:read_chunk_size, 0:read_chunk_size] = \
ds['value'][0:time_dim, 0:read_chunk_size, 0:read_chunk_size]

ds.close()

很明显,我对xarray缓存的理解非常少。因此,如果有人能够解释它实际上是如何工作的,以及随后如何在多次运行性能测试中利用它,我将非常感激。

0 个答案:

没有答案