首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyro4酸洗序列化器numpy数组

Pyro4酸洗序列化器numpy数组
EN

Stack Overflow用户
提问于 2016-10-11 15:07:12
回答 1查看 1.3K关注 0票数 0

尝试使用Pyro4序列化numpy数组将返回以下类型错误

代码语言:javascript
复制
TypeError: don't know how to serialize class <type 'numpy.ndarray'>. Give it vars() or an appropriate __getstate__

代码如下

代码语言:javascript
复制
import numpy as np
import Pyro4

# set pickle serializer
Pyro4.config.SERIALIZERS_ACCEPTED = set(['pickle','json', 'marshal', 'serpent'])


@Pyro4.expose
class test(object):
    def get_array(self):
        return np.random.random((10,10))


def main():
    # create a Pyro daemon
    daemon = Pyro4.Daemon()    
    # register test instance
    uri = daemon.register(test())
    # print uri to connect to it in another console
    print uri
    # start the event loop of the server to wait for calls
    daemon.requestLoop()                   

if __name__=="__main__":
    main()

现在,打开另一个控制台,尝试调用测试实例,执行以下操作

代码语言:javascript
复制
import Pyro4
Pyro4.config.SERIALIZERS_ACCEPTED = set(['pickle','json', 'marshal', 'serpent'])
# connect to URI which is printed above
# must be something like this 'PYRO:obj_c261949088104b839878255b98a9da90@localhost:57495'
p = Pyro4.Proxy(URI)
p.get_array()


Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/Pyro4/core.py", line 171, in __call__
    return self.__send(self.__name, args, kwargs)
  File "/usr/local/lib/python2.7/site-packages/Pyro4/core.py", line 438, in _pyroInvoke
    raise data
TypeError: don't know how to serialize class <type 'numpy.ndarray'>. Give it vars() or an appropriate __getstate
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-12 17:38:46

手册中提到了这一点,包括如何解决这个问题:http://pythonhosted.org/Pyro4/tipstricks.html#pyro-and-numpy

在上面的代码中,您没有告诉客户端代码使用泡菜。您应该为此使用另一个配置项(序列化程序)。你所拥有的一切都是给皮罗迪蒙的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39980505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档