Python检查对象是ListProxy还是DictProxy

Python检查对象是ListProxy还是DictProxy,python,multiprocessing,typing,Python,Multiprocessing,Typing,我正在使用python中的多处理模块,并使用mp管理器提供的共享变量列表和DICT import multiprocessing as mp a = mp.Manager() b = a.list() b <ListProxy object, typeid 'list' at 0x14098207908> c = a.dict() c <DictProxy object, typeid 'dict' at 0x140984579c8> 然而,这些似乎不是内置

我正在使用python中的多处理模块,并使用mp管理器提供的共享变量列表和DICT

import multiprocessing as mp    
a = mp.Manager()

b = a.list()
b
<ListProxy object, typeid 'list' at 0x14098207908>

c = a.dict()
c
<DictProxy object, typeid 'dict' at 0x140984579c8>
然而,这些似乎不是内置类型,我试着对照基列表和dict类型检查它们,但它们显然不起作用

如何在代码中测试这些类型?

从multiprocessing.manager导入ListProxy,DictProxy
如果isinstance(b,ListProxy):
做点什么
elif isinstance(c,代理):
做点别的
您只需从定义它们的位置导入它们,即在manager模块中,尝试以下操作

import multiprocessing as mp

def judge(x):
    if isinstance(x, mp.managers.ListProxy):
        print('It is a ListProxy.')
    elif isinstance(x, mp.managers.DictProxy):
        print('It is a DictProxy.')
    else:
        pass
    pass

def main():
    a = mp.Manager()
    b = a.list()
    c = a.dict()
    judge(b)
    judge(c)
    pass

if __name__ == '__main__':
    main()
    pass

我不确定您是否可以,在运行时:从多处理导入管理器我收到以下错误:回溯(最近一次调用):文件“”,第1行,在导入错误中:无法从“多处理”导入名称“管理器”(~\.conda\envs\tpoc\lib\multiprocessing\u init.py)也尝试导入“管理器”类,但是我得到的是“没有名为”多处理.Manager“的模块您不应该导入
管理器
模块,您应该导入列表并从中记录,就像我代码的第一行一样。当按原样键入代码时,我得到以下信息:
modulenofounderror:没有名为“多处理.Manager”的模块
import multiprocessing as mp

def judge(x):
    if isinstance(x, mp.managers.ListProxy):
        print('It is a ListProxy.')
    elif isinstance(x, mp.managers.DictProxy):
        print('It is a DictProxy.')
    else:
        pass
    pass

def main():
    a = mp.Manager()
    b = a.list()
    c = a.dict()
    judge(b)
    judge(c)
    pass

if __name__ == '__main__':
    main()
    pass