微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

考虑到调用后我仍然可以访问延迟加载的数据,Dataset.close实际上有什么作用?

如何解决考虑到调用后我仍然可以访问延迟加载的数据,Dataset.close实际上有什么作用?

根据文档,xarray.Dataset.close 关闭与该对象链接的所有文件。但是以下示例成功,除非手动关闭fp:

import xarray
fn = "/data/gholl/cache/fogtools/abi/2017/03/14/20/06/7/OR_ABI-L1b-RadF-M3C07_G16_s20170732006100_e20170732016478_c20170732016514.nc"
fp = open(fn,"rb")
ds = xarray.open_dataset(fp)
ds.close()
# fp.close()
print(ds["Rad"][400:402,300:302].load())

无论我将 fn 还是 fp 传递给open_dataset,都会成功。当我通过将chunks=1024传递给open_dataset来懒惰地加载数据时,行为是相同的。查看源代码,看起来好像close指令已传递到后端。那么,当关闭基础文件并且直到请求时才访问数据时,最后一行如何工作?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。