我需要帮助做出决定。我需要在应用程序中传输一些数据,并且必须在这三种技术之间进行选择。 我已阅读有关所有技术一点点(教程,文档),但仍不能决定...谷歌协议缓冲区,HDF5,NumPy比较(传输数据)
他们如何比较?
我需要支持的元数据(能力接收文件,无需任何额外的信息/文件阅读),快速读/写操作,有能力来存储动态数据将是一个加号(如Python对象)
事我已经知道:
- NumPy是非常快但不能存储动态数据(如Python对象)。 (关于元数据呢?)
- HDF5速度非常快,支持自定义属性,易于使用,但不能存储Python对象。 也HDF5本地串行化NumPy数据,所以,恕我直言,NumPy没有HDF5的优势
- Google Protocol Buffers也支持自我描述,速度很快(但Python支持当前时间较慢,而且缓慢)。可以存储动态数据。缺点 - 自我描述不适用于Python,大于等于1 MB的消息不是很快(读取“慢”)的序列化/反序列化。
PS:数据I需要转移是NumPy的/ SciPy的(阵列,复杂结构的阵列等)的 “工作的结果”
UPD:需要跨语言访问(C/C++/Python)的
如果您正在考虑HDF5,请使用PyTables。 http://www.pytables.org/moin它基本上允许您构建类,以便轻松快速地将元数据和numpy数组存储,重新创建和查询到HDF5。因为它只是将内容存储到HDF5中,所以您应该能够通过常用的库轻松访问C/C++中的内容。 – 2010-11-08 17:43:05
是的,我知道PyTables,你很容易使用和跨语言,但他们不允许我存储Python对象... – 2010-11-08 18:05:37