Python - 将整数数组存储到磁盘以便有效检索

时间:2014-03-05 18:05:05

标签: python

我有一个需要存储在文件中的大整数数组,最有效的方法是什么,以便快速检索?我并不关心写入磁盘的效率,而是只读取 我想知道除了json和pickle之外是否还有一个很好的解决方案?

2 个答案:

答案 0 :(得分:1)

JSON / pickle是非常低效的解决方案,因为它们最多需要几个内存副本才能将数据输入或输出。

如果您想获得最佳效率,请保留数据二进制文件。纯python方法将涉及使用struct.unpack,但是这仍然需要一个内存副本,这有点麻烦。

更好的是numpy.memmap,它直接将你的文件映射到numpy数组。速度非常快,内存效率非常高。问题解决了。您也可以使用相同的方法编写文件。

答案 1 :(得分:1)

在加载数据方面,

msgpack可能会击败json。或者,至少,msgpack在加载许多大文件时在my tests中胜过json。另一种可能性是尝试HDF5 for Python

  

HDF5是一个用于存储大型文件的开源库和文件格式   数量数据,最初由NCSA开发。它很广泛   在科学界用于NASA地球的一切   观察系统来存储来自实验室实验的数据   和模拟。在过去几年中,HDF5迅速崛起   Python中事实上的标准技术来存储大数值   数据集。

在你的情况下,我会选择HDF5。