まず、flush メソッドを使用して記録クラスを作成しました。
class Recorder
def __init__(self, buffer_size, path):
self._big_buffer = np.array(*buffer_size)
self._path = path
def push(self, data):
# insert in self._big_buffer
# if self._big_buffer is full:
# self._flush()
def flush(self):
# write buffer to disk (self._path)
次に、手動で停止したとき、クラッシュしたとき、または何らかの理由で終了時にフラッシュしたかったのです。
だから私は使用しました:
def __init__(self):
(...)
atexit.register(self.flush)
そして、それはかなりうまくいきました。
しかし今、私は、別のバッファサイズと別のパスで、記録、記録の停止、再記録を複数回行いたいと考えています。したがって、破棄してから、いくつかをインスタンス化する必要がありRecorder
ます。ある程度は機能しますが、 oldRecorder
のメモリ (いくつかの fat を含むself._big_buffer̀
) は によって保持されているため、解放されませんatexit
。明示的に呼び出す場合でもdel
。atexit.unregister(self._flush)
Python 3のみなのでできません。
既存のインスタンスを再利用するのではなく、古いインスタンスを破棄して新しいインスタンスを作成したいと考えています。
このような場合、どのように対処しますか?