首页 > 解决方案 > 缓存实例方法时无法腌制命名元组

问题描述

我试图缓存一个返回命名元组列表的python类的实例方法,但这个错误似乎是不可避免的:

pickle.PicklingError: Can't pickle <class '__main__.MyClass'>: it's not found as __main__.MyClass

如果我们myMethod将实例方法命名为我想要缓存的结果,我的代码如下所示:

import joblib

class MyClass():
   def __init__(self):
      mem = joblib.Memory('./cache_dir')
      self.myMethod = mem.cache(self.myMethod)
   
   def myMethod(self):
      <does something>
   
      return list_of_namedtuples

是什么导致了错误?有没有办法绕过它?

标签: pythoncachingpicklenamedtuple

解决方案


推荐阅读