1
当memmap数组被垃圾收集时,是否有可能删除Numpy memmap文件?带有文件删除的Numpy memmap
我曾尝试:
import tempfile
import numpy as np
arr = np.memmap(tempfile.NamedTemporaryFile(), mode='w+',
shape=(10, 10), dtype=np.int)
os.path.exists(arr.filename) # False
但它出现在参照临时文件并非保持被删除。
我不想在临时文件上使用上下文管理器,因为我希望能够从函数中返回数组,并让文件处于活动状态,直到数组不再使用。
注意:类似的问题在这里:In Python, is it possible to overload Numpy's memmap to delete itself when the memmap object is no longer referenced?但提问者展示了对Python范围和tempfile模块的了解。
看起来'tempfile'和'memmap'之间存在一些棘手的相互作用。如果临时文件是首先创建的,或者我使用自己的文件名,那么这个文件就存在于'os.path'和一个OS文件管理器中。创建你的方式文件可能不存在于内存缓冲区之外。还可以用'delete = False'进行实验。 – hpaulj
它看起来像你关于链接SO的简短讨论回答你的问题。这一切都与操作系统的交互以及'tempfile'如何创建文件有关。 – hpaulj