给定一个类和其中的2个方法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"进行评测时失败
只将Python无状态函数传递给joblib.Parallel
可能更安全。您可以尝试import dill
注册酸洗支持,例如方法:https://pypi.python.org/pypi/dill(不过您的里程数可能有所不同)。
尝试给予backend="螺纹";,多进程是默认的,而且它似乎正在崩溃。这为我解决了