我正在尝试设置一个性能测试来重复读取具有不同分块配置的 netcdf 文件,以最终确定特定用例的最佳块大小。我遇到的一个问题是,当使用xarray.open_dataset()读取文件时,即使缓存设置为 False,它仍然以某种方式将缓存存储在内存中。我知道这是基于两个指标的情况:
这是我运行的代码:
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()
Run Code Online (Sandbox Code Playgroud)
很明显,我对 xarray 中缓存的理解非常少。因此,如果有人能向我解释它的实际工作原理,以及如何在多运行性能测试中利用它,我将不胜感激。
我必须创建一个实现ServletContextListener在初始化或关闭 Tomcat 期间添加事件的类。但是,该类必须位于 .jar 文件中的 jar 文件中WEB-INF/lib。在做了一些阅读之后,我发现这是不可能的,替代方法是使用ServletContainerInitializer. 但是,只有onStartup()方法可用。
是否还有其他替代方法可以在 Web 应用程序关闭或销毁期间添加事件?
顺便说一句,我正在使用 Tomcat 8 和 Java 8。