2017-09-15 73 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