我如何编写一个 python 函数包装器,如果输入参数的哈希已知,它会加载结果



我的机器学习环境中的许多函数都是确定性的。这意味着,对于相同的输入,它们始终具有完全相同的输出。

由于我经常使用相同的参数调用这些函数,因此我想自动检测之前是否完成过计算。如果是,请从 pickle 文件重新加载,否则计算并使用参数哈希存储到 pickle 文件中。

我该如何实现?使用包装类?装饰师?

您可以使用一个装饰器来更新列表,其中包含稍后在包装器中使用的每个函数的名称:

import pickle
called_functs = []
def called(f):
  def call_wrapper(*args, **kwargs):
     if f.__name__ in called_functs:
        data = pickle.load(open('filename.txt'))
        #do something with data
     else:
        global called_functs
        called_functs.append(f.__name__)
        pickle.dump([args, kwargs, f(*args, **kwargs)], open('filename.txt', 'w'))
   return call_wrapper
@called
def backpropagate(*args, **kwargs): #example from a neural net
   pass
   #do something

最新更新