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
をしかし、削除されますので、保管されていない一時ファイルへの参照を表示されます。
私が試してみました。
私は関数から配列を返すことができ、配列がもはや使用されなくなるまでファイルを生きたいと思っているので、一時ファイルに対してコンテキストマネージャを使いたくありません。
NB:同様の質問は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