给定一个类和其中的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/

10-12 17:56