python mmap:如果引用缓冲区,我们是否需要保留对内存映射对象的引用?

问题描述

在 Python 中处理内存映射文件的典型代码片段如下

f = open(binfname,'a+b' if writable else 'rb')
fmmap = mmap.mmap(f.fileno(),access=mmap.ACCESS_WRITE if writable else mmap.ACCESS_READ)
f.close()   # mmap will stay open. guarantueed by POSIX and Windows

array = numpy.frombuffer(fmmap,dtype,numel,0)  # this works since mmap implements the buffer protocol

#fmmap = None  # kill reference to mmap object.  WHAT IS THE IMPACT OF THIS ?

在使用 fmmap 时是否需要保留对 array 的引用?

在我看来,numpy.frombuffer 创建了对 fmmap 的引用,因此只要使用 array,mmap 对象就会保持活动状态。这是正确的吗?

当没有对 array 的引用时 fmmap 被销毁会发生什么? 内存映射会自动关闭吗?

如果它没有关闭会怎样?

documentation 显然没有涵盖这个主题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...