给定一个类和其中的2个方法A,B。
在A中尝试执行以下命令时,出现“TypeError:无法腌制instancemethod对象”的消息:
joblib.Parallel(n_jobs=-1)(joblib.delayed(self.B)(arg1, arg2, arg3) for arg1 in arg1_values_list)
我发现Stackoverflow上有几个关于instancemethod的线程,它们的一部分甚至与joblib有关,但是我仍然没有设法克服这个错误。
如下代码:
from sklearn.externals.joblib import Parallel, delayed
def a(self, x):
print x
return x*10
class c(object):
def b(self):
Parallel(n_jobs=-1)(
delayed(a)(self, i)
for i in range(10))
test_c = c()
test_c.b()
正常运行时运行正常。
但是在尝试使用“python -m cProfile”进行配置文件时失败
最佳答案
仅将Python无状态函数传递给joblib.Parallel
可能更安全。您可以尝试import dill
注册实例方法的腌制支持:https://pypi.python.org/pypi/dill(尽管您的里程可能有所不同)。
关于scikit-learn - 如何克服classlib方法上的joblib的 "TypeError: can' t泡菜实例方法对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20628623/