当一个简单的numpy数组的大小超过某个阈值时,我在从Pyro4服务器(version 4.39,serializer= pickle)取回它时遇到了问题。服务器处理请求并回复,但客户端保持挂起状态
代码如下:
服务器代码:
import numpy as np, Pyro4
class U(object):
def __init__(self):
self.Data = np.arange(10000000).reshape(200,50000)
print self.Data.shape
def get(self,name):
print '%s Requested' % name
return self.Data
def run():
Uni = U()
daemon = Pyro4.Daemon(host='localhost')
ns = Pyro4.locateNS()
uri = daemon.register(Uni)
ns.register("test",uri)
print 'Up and waiting ...'
daemon.requestLoop()
if __name__ == '__main__':
run()客户端代码:
import Pyro4
ns = Pyro4.locateNS()
uri = ns.lookup('test')
U=Pyro4.Proxy(uri)
Data = U.get('Data')服务器输出:(200,50000)启动并等待...请求的数据
因此,Pyro服务器似乎会处理来自客户端的请求并返回数据,但是客户端永远不会收到数据,并且会无限期地挂起,等待接收消息。
PS:-相同的代码适用于较小的数组(200,5000)
有没有人知道问题出在哪里?
非常感谢你的帮助,
发布于 2015-10-06 21:29:34
当我运行它时,客户端停止并返回
Traceback (most recent call last):
File "client.py", line 5, in <module>
Data = U.get('Data')
File "C:\python34\lib\site-packages\Pyro4\core.py", line 171, in __call__
return self.__send(self.__name, args, kwargs)
File "C:\python34\lib\site-packages\Pyro4\core.py", line 426, in _pyroInvoke
raise data
TypeError: don't know how to serialize class <class 'numpy.ndarray'>. Give it vars() or an appropriate __getstate__https://stackoverflow.com/questions/32968896
复制相似问题