2017-09-15 26 views
1

我使用Python 2.7多在Windows 7:Python的检查isinstance multiprocessing.Manager()队列()

import multiprocessing as mp 
from Queue import Queue 
from multiprocessing.managers import AutoProxy 

if __name__ == '__main__': 
    manager = mp.Manager() 
    myqueue = manager.Queue() 

    print myqueue 
    print type(myqueue) 
    print isinstance(myqueue, Queue) 
    print isinstance(myqueue, AutoProxy) 

输出:

<Queue.Queue instance at 0x0000000002956B08> 
<class 'multiprocessing.managers.AutoProxy[Queue]'> 
False 
Traceback (most recent call last): 
    File "C:/Users/User/TryHere.py", line 12, in <module> print 
    isinstance(myqueue, AutoProxy) TypeError: isinstance() arg 2 must be a 
    class, type, or tuple of classes and types 

我的问题是:我想检查如果一个变量是一个多处理队列的实例,我该如何去检查?

我都提到:

Check for instance of Python multiprocessing.Connection?

Accessing an attribute of a multiprocessing Proxy of a class

,但他们似乎没有解决我的问题。提前致谢!

回答

2

问题:我想检查一个变量是一个多队列的情况下,我应该如何去检查?

这是一个代理对象,multiprocessing.managers.BaseProxy不匹配:

from multiprocessing.managers import BaseProxy 
print(isinstance(myqueue, BaseProxy)) 
>>>True 

测试使用Python 3.4.2和2.7.9