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