python - 是否可以扩展xml-rpc可以序列化的东西?

时间:2014-04-30 23:31:51

标签: python xml-rpc

我已经看到几个问题,询问如何通过xml-rpc调用发送numpy.ndarray。这不是开箱即用的,因为正如xml-rpc docs所述,有一组固定的支持类型,基本上只限于内置函数的内置函数和容器。

一个简单的解决方案是使用

将numpy数组转换为列表

<array to send>.tolist()

在发送方,并使用

转换回numpy数组

np.array(<list I received>)

在接收方。但是,假设我希望能够直接支持ndarray,而不需要明确展平/取消。我可以实现一个接口来实现这个功能吗?例如,我可以扩展ndarray(我知道这很棘手)某些扁平化/非扁平化方法,这些方法将在xml-rpc中注册,从而用于序列化/反序列化吗?

1 个答案:

答案 0 :(得分:1)

我认为没有任何延期的钩子。

您可以对对象进行编码/取消编码,而不是展平/取消展开,例如使用pickle或base64编码的pickle。

如果你做了压扁,请记住你需要:

<array>.shape
<array>.dtype
<array>.flat

简单的dtypes可以来回转换为字符串;如果你想支持它们,你可能需要更仔细地考虑复杂的dtypes。

[编辑]简洁地回答你的问题:不 - 没有可用的扩展挂钩。