如何克服joblib对类方法的"TypeError: can't pickle instancemethod objects"?



给定一个类和其中的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="螺纹";,多进程是默认的,而且它似乎正在崩溃。这为我解决了

的问题

相关内容

  • 没有找到相关文章

最新更新