2017-12-06 13 views
0

私のクラスの初期化には時間がかかります(約1時間)。しかし、その結果、小さな配列の4つの配列があります。ハードドライブに結果を保存し、クラスに同じ入力を与えた場合は結果をロードする方法はありますか?クラス全体をハッシュ入力の名前でファイルに保存する方法は?

class class_1(a,b): 

     def __init__(self): 
      self.a = a 
      self.b = b 

     def load_class(self): 
      hashed_input = ... 
      if os.path.isdir('data/'+hashed_input): 
       ...load out.... 
      else: self.calc_out() 

     def calc_out(self): 

     ...takes an hour... 


     def save_class(self): 
      hashed_input = ... 
      dir = '/data/'+hashed_input 
      import pathlib 
      pathlib.Path(dir).mkdir(parents=True, exist_ok=True) 
      np.savez('dir/File.npz', out=self.out) 


    args = {a:1, b:2} 
    foo = class_1(**args) 
    foo.save_class() 

しかし、私はクラス内でargs dictを使用する必要があります。

答えて

0

foo.saveをコールバックとしてcalc_outに渡すことはありますか?

def calc_out(self, cb): 
    ... 
    ... 
    cb() 

foo.call_out(foo.save) 
関連する問題