Python的多进程问题

from multiprocessing.managers import BaseManager
import queue

db = {"name": "123456"}
print(dir(db))

class RegisterManager(BaseManager):
    pass

def getUsers():
    return db

RegisterManager.register("getUsers", getUsers)

manager = RegisterManager(address = ("127.0.0.1", 5000), authkey=b"666")
if __name__ == "__main__":
    manager.start()
    userTable = manager.getUsers()
    print(dir(userTable))
    userTable["name"] = "王尼玛"
    manager.shutdown()

这个是我的代码,第22行会报错
图片描述
第5行的输出
图片描述
第19行的输出,从manager里调用函数取出来就没有__setitem__方法了
有没有办法让第20行的代码不报错?
图片描述

阅读 1.5k
1 个回答

SyncManager 便可,如

# -*- coding: utf-8 -*-
from multiprocessing.managers import SyncManager


class RegisterManager(SyncManager):
    pass


if __name__ == "__main__":
    manager = RegisterManager(address=("127.0.0.1", 5000), authkey=b"666")
    manager.start()
    userTable = manager.dict()
    userTable["key"] = "hi"
    manager.shutdown()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题