![](/img/trans.png)
[英]Python: What's the best way to send status bits and timestamps with PySerial
[英]What's the best way to send an object over a network in Python?
我需要在网络周围发送对象。 我将使用Twisted,我刚刚开始查看文档。
据我所知,python实现套接字的唯一方法是通过文本。 那么我如何使用字符串发送对象? 泡菜? 还是有更好的东西?
Python端点之间提供的最常见的序列化是pickle格式(在Python 2.any中,一定要使用cPickle
模块,以及-1
aka pickle.HIGHEST_PROTOCOL
协议;如果你需要Python 2.any和Python之间的互操作性Python 3.需要更多的关注)。 对于特别简单的物体, marshal
模块有时可以更快,更紧凑。 为了与非Python端点进行互操作, json
可能是最好的(或者您可以使用xml
来定义或采用其他现有的序列化格式),但这些格式和解析可能会更庞大,速度更慢。
据我所知,python实现套接字的唯一方法是通过文本。
不,所有字符串都是受欢迎的! - )你可能会感到困惑的是,在Python 2中,“普通字符串”实际上是一串字节(“text”将是unicode
类型); Python 3设置正确,并使用Unicode作为“普通字符串”,使用特定字节字符串类型作为字节串。
根据某些协议或其他语言,字节串是任何语言执行任何形式的序列化和反序列化的一般方式 - 当然,这样的字节流或blob可以进入网络,数据库,普通文件等。
Twisted提供了自己的序列化格式,作为部分twisted.spread - 它主要用于Perspective Broker(PB),但如果你不想因某些特殊原因使用PB,你可以将它重新用于你自己的目的。 序列化部分的文档twisted.spread.jelly
就在这里 ,并总结了格式的目标......:
基于S表达式的python对象持久化。
它做的非常像Pickle; 然而,泡菜的主要目标似乎是效率(空间和时间); jelly的主要目标是安全性,人类可读性以及对其他环境的可移植性。
如果您更关心安全性,可读性和便携性,而不是速度和紧凑性,那么果冻可能确实对您有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.