我在Windows 7上使用python 2.7多处理:
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
但他们似乎没有解决我的问题。提前谢谢!
答案 0 :(得分:2)
问题:我想检查变量是否是多处理队列的实例,我应该如何进行检查?
这是一个代理对象,multiprocessing.managers.BaseProxy
匹配:
from multiprocessing.managers import BaseProxy
print(isinstance(myqueue, BaseProxy))
>>>True
使用Python测试:3.4.2和2.7.9
答案 1 :(得分:0)
这就是我要做的:
import multiprocessing as mp
my_queue = mp.Queue()
print(type(my_queue) == type(mp.Queue()))
>>>True
答案 2 :(得分:0)
对于Python 3.6,等效值为
import multiprocessing
test_queue = multiprocessing.Queue()
type(test_queue) == multiprocessing.queues.Queue:
>>> True
我们可以选择不对@mikeye提议的新创建的Queue对象执行类型检查