私はPythonを使用してデータ分析を行っており、クラスのインスタンスをファイルに保存して、属性の値を維持したまま後で再ロードできるようにする良い方法を見つけたいと考えていました。特に、このクラスのインスタンスは、他のクラスのインスタンスであるオブジェクトをロードし、完了までに時間がかかるプロセッサ集中型の比較を行います。
例えば:
import pickle
class MyClass():
def __init__(self):
self.info = OtherClass(option=1)
def pickle(self):
f = file('test_file', 'wb')
pickle.dump(self, f, pickle.HIGHEST_PROTOCOL)
f.close()
def unpickle(self):
f = file('test_file', 'rb')
pickle.load(f)
f.close()
class OtherClass():
def __init__(self, option):
self.property = option * 2
mydata = MyClass(option=5)
mydata.pickle()
次に、後でこのモジュールをインポートし、mydata.unpickle() を実行して mydata を取得します (ファイルが以前にピクルされたかどうかを調べ、その場合は OtherClass インスタンスの計算と呼び出しを一時停止するオプションもあります)。現時点では、これを行うと mydata をロードできますが、mydata.info オブジェクトはもうありません。私の理解では、これは pickle の意図的な部分ですが、後で使用できるように mydata を完全に保存する方法はありますか?