问题描述
在 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 (将#修改为@)