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