所以下面的答案是:Encode an object with Avro to a byte array in Python我可以通过ZeroMQ发送消息-但是性能非常缓慢。
这是意料之中的,因为avropython实现是纯Python,而且我们看到FastAvro作者的类似性能注释。AFAIK,FastAvro不能用于生成用于消息队列的消息,它适合于写入文件。在
所以回到上面的链接,我很想知道这个方法是否比实际需要的复杂——Avro DatumWriter不能被本机用来创建适合消息传递的东西,这似乎很奇怪。在
这就引出了我的最后一点(也是我怀疑的原因)。当我使用Getting Started with Avro (Python)示例中的标准示例时,我可以将我的一个二进制文件流式传输到.avro文件中,它的大小大约为5.8MB。当我使用message方法将其编码为字节数组时,最终得到的消息总大小为11MB。为什么这些方法之间有如此大的差异?大概他们会很相似。。。在
请注意,我已经从writer示例中删除了deflate编解码器,以确保它是苹果对苹果的比较。启用deflate时,大小仅为2.8MB。在
我不确定您是如何发送消息的,但您应该能够使
fastavro
工作。例如,由于它可以序列化为任何类似文件的对象,因此可以直接检索字节:如果你想检查一下:
^{pr2}$如果您的邮件有页眉、页脚等,您只需根据需要将它们写入
buf
。在最后,关于大小差异,我怀疑会包含大量冗余信息(可能是模式?)。在
相关问题 更多 >
编程相关推荐