次の投稿が非常に役に立ちました: How to pickle yourself?
ただし、このソリューションの制限は、クラスが再ロードされたときに「実行時」状態で返されないことです。つまり、すべての変数などと、ダンプされた時点でのクラスの一般的な状態がリロードされます..しかし、その時点から実行を継続することはありません。
検討:
class someClass(object):
def doSomething(self):
i = 0
while i <= 20:
execute
i += 1
if i == 10:
self.dumpState()
def dumpState(self):
with open('somePickleFile','wb') as handle:
pickle.dump(self, handle)
@classmethod
def loadState(cls, file_name):
with open(file_name, 'rb') as handle:
return pickle.load(handle)
上記が実行される場合、someClass のインスタンスを作成することによって:
sC = someClass()
sC.doSomething()
sC.loadState('somePickleFile')
これはクラスを実行時状態に戻さず、i == 20 になるまで while ループを続行しません。
これは正しいアプローチではないかもしれませんが、プログラムの実行時の状態をキャプチャする方法、つまりフリーズ/休止状態にし、別のマシンに移動した後に再起動する方法を見つけようとしています..これは私が抱えている問題によるものです.チェックポインティングをサポートしていないクラスタ上のキューイング システムによって適用される時間制限があります。