Python检查对象是ListProxy还是DictProxy
我正在使用python中的多处理模块,并使用mp管理器提供的共享变量列表和DICTPython检查对象是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> 然而,这些似乎不是内置
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