TypeError:当我跨进程共享类对象时,无法pickle\u thread.lock对象

2024-10-01 04:55:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个锁定特定字符串的类

class StrLock(object):
    def __init__(self):
        self.strings_locked = []

    def add_str(self,word):
        self.strings_locked.append(word)
    def get_str(self):
        return self.strings_locked
    def lock(self,str):
        #lot of code to lock str in zookeeper
    def unlock(self,str):
        #lot of code to unlock the same string in zookeeper

所以我要做的是,在3个进程中,每个进程包含大约10-15个线程,我创建StrLock对象并锁定字符串

我面临的问题是,我试图使用BaseManager在进程之间共享StrLock对象

像这样的

class MyManager(BaseManager): pass

def Manager():
    m = MyManager()
    m.start()
    return m

MyManager.register('StrLock', StrLock)
manager = Manager()
locker  = manager.StrLock()

但是当我将StrLock对象附加到sharedlocker变量时,我得到

TypeError:无法pickle\u thread.lock对象

请帮忙


Tags: 对象字符串selflockreturn进程defclass