在Python中读取和写入数据的最快方法?

时间:2013-11-06 07:51:22

标签: python file-io

假设我有一个非常大的文件,我只想分成更小的块并连续处理。但是,在该实现中,读取和写入这些块是瓶颈。因此,我正在寻找最好的方法。我现在正在使用cPickle,倾倒并加载块。你还有其他建议吗?

2 个答案:

答案 0 :(得分:2)

mmap将部分文件高速缓存映射到进程内存,允许基于指针(或在Python的情况下,基于索引/切片)访问文件中的字节。从那里你可以切割mmap对象以获取字符串,并将它们传递给cPickle.loads()以恢复原始对象。

答案 1 :(得分:1)

您可能不会比file.read(chunksize)更快地从文件中读取chunksize字节。你可以这样做,直到你读取少于chunksize字节(然后你知道你已经到了最后)。 e.g:

with open('datafile') as fin:
    data = fin.read(chunksize)
    process(data)
    while len(data) == chunksize
        data = fin.read(chunksize)
        process(data)

但是,既然你说你正在使用cPickle - 我不确定数据是什么样的,或者你是否正在寻找更复杂的东西......

并提出警告 - 一般来说,fileIO是您可以使用计算机执行的最慢的事情之一。如果你正在做很多事情,无论你做什么,你都可以期待它成为一个瓶颈(除非你有一个真正花哨的文件系统 - 那么你可能能够做点什么)。