【问题标题】:Parallelizing function which takes a class object instance as input argument with Joblib使用 Joblib 将类对象实例作为输入参数的并行化函数
【发布时间】:2021-09-28 10:06:21
【问题描述】:

我有一个对象类,其初始化函数定义如下

class Foo:
    def __init__(self, arg1, arg2, arg3=True, ...):
        ...

我想并行化一个将我的 Foo 类的实例作为输入的函数。但它会抛出以下错误

foo = F(arg1, arg2, arg3)
Parallel(n_jobs=-1)(delayed(fun)(x, y, foo) for x, y in [args])

__init__() missing 1 required positional argument ...

据我所知,当 foo 对象被 Joblib 腌制时,它会创建我的 foo 类实例的副本,但由于某种原因,该副本没有使用所有正确的参数正确初始化。

【问题讨论】:

  • 每个参数总是将类实例作为参数
  • 无论如何,您确实必须提供minimal reproducible example,包括带有堆栈跟踪的完整错误消息
  • @juanpa.arrivillaga 感谢您的评论,研究最小的可重现示例为我提供了解决方案。我应该在发布问题之前这样做。
  • 这就是调试问题需要它的原因:)

标签: python multiprocessing pickle joblib


【解决方案1】:

问题是我的类继承了另一个类,该类有一个复制自身的方法,当它这样做时,它没有传递我继承的类的附加参数。

【讨论】:

    猜你喜欢
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多