我试图使用multiprocessing
模块在进程之间传递一个自定义Queue
。问题是我没有把所有的方法都用到另一边。根据文件。在
A proxy object has methods which invoke corresponding methods of its referent (although not every method of the referent will necessarily be available through the proxy). A proxy can usually be used in most of the same ways that its referent can
但它并没有说明原因或解决办法。我想知道有没有人知道这样做的方法。在
这里有一个我想做的小例子。在
服务器:
from multiprocessing.managers import BaseManager
from Queue import Queue
class KeyHandler(Queue):
def __init__(self, elements=[]):
Queue.__init__(self)
for element in elements:
self.put(element)
def __iter__(self):
return iter(self.get, object())
def __call__(self):
return self
class QueueManager(BaseManager):
pass
keyhandler = KeyHandler(range(10))
QueueManager.register('keyhandler', callable=keyhandler)
manager = QueueManager(address=('', 50000), authkey='foobar')
server = manager.get_server()
server.serve_forever()
客户:
^{pr2}$回溯:
Traceback (most recent call last):
File "client2.py", line 14, in <module>
for elem in keyhandler:
TypeError: 'AutoProxy[keyhandler]' object is not iterable
__call__
方法有效,__iter__
方法不行。我可以强制/解决这个问题吗?在
使用代理。在客户端上添加这个类声明(以及导入
BaseProxy
):并将
^{pr2}$register
(客户机的)更改为:相关问题 更多 >
编程相关推荐