Python 多处理中通过键访问dict中的值

Python 多处理中通过键访问dict中的值,python,dictionary,multiprocessing,Python,Dictionary,Multiprocessing,使用多处理模块,我编写了一个服务器来为dict提供服务。现在,尝试使用客户端通过键访问dict,我得到以下错误(server.py和client.py位于文章的底部): 这与server.py中的print(dir(my_dict))的输出不同: ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattr

使用多处理模块,我编写了一个服务器来为dict提供服务。现在,尝试使用客户端通过键访问dict,我得到以下错误(
server.py
client.py
位于文章的底部):

这与
server.py中的
print(dir(my_dict))
的输出不同:

['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
看起来这个Autoproxy对象保留了
dict
对象的一些方法,但显然不是所有方法。关键的是它没有保留
\uuu getitem\uuu
方法,该方法阻止我通过键访问项目

我如何通过按键访问
dict
项?另外,任何关于
Proxy
s如何使用Python多处理的解释都会非常有用

注意:我不需要修改
dict
值,我只需要按键提取它们

server.py:

from multiprocessing.managers import SyncManager

my_dict = {'item_1': 1, 'item_2':2}
def get_my_dict():
    return my_dict

class MyManager(SyncManager):
    pass

if __name__ == "__main__":
    port_num = 4343
    MyManager.register("get_dict", get_my_dict)
    manager = MyManager(("127.0.0.1", port_num), authkey=b"password")
    manager.start()
    input("Press any key to kill server".center(50, "-"))
    manager.shutdown
client.py

from multiprocessing.managers import SyncManager
import sys

class MyManager(SyncManager):
    pass

MyManager.register("get_dict")

if __name__ == "__main__":
    port_num = 4343
    manager = MyManager(("127.0.0.1", port_num), authkey=b"password")
    manager.connect()
    my_dict = manager.get_dict()

    print("dict = %s" % (dir(my_dict)))
    keys = list(my_dict.keys())
    print(keys)
    for key in keys:
        print(my_dict[key])

您可以使用
get
在任何版本中获取字典的元素

from multiprocessing.managers import SyncManager

my_dict = {'item_1': 1, 'item_2':2}
def get_my_dict():
    return my_dict

class MyManager(SyncManager):
    pass

if __name__ == "__main__":
    port_num = 4343
    MyManager.register("get_dict", get_my_dict)
    manager = MyManager(("127.0.0.1", port_num), authkey=b"password")
    manager.start()
    input("Press any key to kill server".center(50, "-"))
    manager.shutdown
from multiprocessing.managers import SyncManager
import sys

class MyManager(SyncManager):
    pass

MyManager.register("get_dict")

if __name__ == "__main__":
    port_num = 4343
    manager = MyManager(("127.0.0.1", port_num), authkey=b"password")
    manager.connect()
    my_dict = manager.get_dict()

    print("dict = %s" % (dir(my_dict)))
    keys = list(my_dict.keys())
    print(keys)
    for key in keys:
        print(my_dict[key])