2014-03-05 30 views
0

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

+0

也许使用numpy可以提供帮助吗? http://docs.scipy.org/doc/numpy/reference/generated/numpy.save.html –

+3

那么你是否尝试过使用JSON,并发现它对你的需求太慢? –

+0

json可能是你用python实现的最快速的方式...(保存在内存中)... –

回答

1

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

如果您想获得最佳效率,请保留数据二进制文件。纯粹的python方法会涉及到使用struct.unpack,但是这仍然有点不便,因为你仍然需要一个内存拷贝。

更好的是像numpy.memmap那样直接将你的文件映射到一个numpy数组。速度非常快,非常有效。问题解决了。您也可以使用相同的方法编写文件。

1

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

HDF5是一个开放源码库和文件格式,用于存储大量 大量数字数据,最初在NCSA开发的。它在科学界广泛使用,用于从NASA的地球 观测系统到实验室实验 和模拟的数据存储。在过去的几年中,HDF5已经迅速成为Python中事实上的标准技术,用于存储大数字数据集 。

在你的情况下,我会去HDF5。

相关问题