2017-09-15 5 views
1

Ich verwende Python 2.7 Multiprocessing auf Windows 7:.Python Check isinstance multiprocessing.Manager() Queue()

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) 

Ausgang:

<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 

Meine Frage ist: Ich möchte überprüfen Wenn eine Variable eine Instanz einer Multiprocessing-Queue ist, wie soll ich dann prüfen?

Ich habe genannt:

Check for instance of Python multiprocessing.Connection?

Accessing an attribute of a multiprocessing Proxy of a class

aber sie scheinen nicht mein Problem zu beheben. Danke im Voraus!

Antwort

2

Frage: Ich möchte überprüfen, ob eine Variable eine Instanz einer Multiprozessor-Warteschlange ist, wie soll ich mich über die Überprüfung?

Es ist ein Proxy-Objekt, multiprocessing.managers.BaseProxy überein:

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

Getestet mit Python 3.4.2 und 2.7.9