令人讨厌的错误:函数MyClass.metho与__module __。MyClass.metho不同

时间:2019-07-19 01:55:34

标签: python-3.x pickle python-multiprocessing

我正在尝试实现元类/装饰器工具,以使代码易于并行化。我正在使用Python的多处理程序。

说我有

row.names = F

执行pool.starmap()时,我得到:

class Worker(metaclass=Parallelizable):
    def __init__(self):
        super().__init__()

# annotate some method for parallele computation
@ParalleleMethod
def long_calculation(self, data):
    # do stuff
    return ans

class ParalleleMethod:
  def __init__(self, func):
    self.func = func
  def __call__(self, data):
    # as a prototype of the idea I want to get to
    pool.starmap(self.func, data)

我猜这是原因:

  

请注意,功能(内置和用户定义)由“完全   合格”名称参考,而不是按值。 2这意味着只有   腌制函数名称以及模块名称   函数是在其中定义的。函数的代码或其任何形式均未定义   函数属性被腌制。因此,定义模块必须是   可在解酸环境中导入,并且模块必须包含   命名的对象,否则将引发异常。

自从我将该函数作为对象传递给 init 以来,该对象已不再完全合格。

有没有一种方法可以将“完全资格”再次“添加”到self.func中?假设是,如果我能够做到这一点,则酸洗会起作用-它会找到需要酸洗的定义(并在其他过程中解酸)?

0 个答案:

没有答案