为什么在使用类继承时会出现“无法腌制模块对象错误”?

问题描述

我收到此错误,但无法弄清楚。我什至不使用泡菜。我希望能找到一些指导。我有一个填充队列并处理队列的类。类如下:

    from multiprocessing import Process,Manager,Queue,Lock
    
        class Searcher():
             def __init__(self,*args,**kwargs):
                  self.q = Queue(maxsize=10)
                  self.manager = Manager().dict()
                  self.lock = Lock()
        
             def run(self,n_workers):
                  jobs = []
                  p = Process(target = self._populate_queue)
                  jobs.append(p)
                  p.start()
                  for _ in range(n_workers):
                       p = Process(target = self._process_queue)
                       jobs.append(p)
                       p.start()
                  for job in jobs:
                       job.join()
             def _populate_queue(self):
                  #put things in queue
             def _process_queue(self):
                  #remove and process things from queue

if __name__ == '__main__':
     s = Searcher()
     s.run(n_workers=4)

如果我只是执行脚本,它就可以正常工作。

现在我想实现另一个继承自前一个 Searcher 类的类,以便能够将它与其他东西结合起来,但是当我将它与两个类结合时,我得到了 TypeError: cannot pickle 'module' object,例如:

from searcher import Searcher
from other_module import OtherClass

class MoreSearching(Searcher,OtherClass):
     def __init__(self,**kwargs):
          super().__init__(*args,**kwargs)


if __name__ == '__main__':
     ms = MoreSearching()
     ms.run(n_workers=4)

OtherClass 使用 deap 实现,类似于:

from deap import base,creator

class OtherClass(base.ToolBox):
     def __init__(self):
          base.ToolBox.__init__(self)
          self.creator = creator

为什么我会收到这个错误以及我应该怎么做才能解决这个问题并保持我正在寻找的功能(能够使用 deap 库来优化输出,当 run 函数Searcher 结束)?我注意到当 self.creator = creator 中出现 OtherClass 行时会发生错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)