给出一个类和两个方法A,B。
我在A中尝试执行以下命令时遇到“TypeError:无法pickle 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”进行配置文件时失败
答案 0 :(得分:3)
将Python无状态函数传递给joblib.Parallel
可能更安全。您可以尝试import dill
为实例方法注册酸洗支持:https://pypi.python.org/pypi/dill(您的里程可能会有所不同)。
答案 1 :(得分:0)
尝试给 backend="threading",默认情况下是多进程,它似乎正在崩溃。这为我解决了问题