微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

    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 举报,一经查实,本站将立刻删除。