假设我有一个非常大的文件,我想将其简单地分成较小的块并逐个处理。然而,在该实现中,读取和写入这些块是瓶颈。因此,我正在寻找最好的可能方式。我目前正在使用cPickle,转储和加载这些块。你有其他替代建议吗?
mmap
函数将文件缓存的一部分映射到进程内存中,从而允许基于指针(或在Python中,基于索引/切片)对文件中的字节进行访问。然后,您可以切片mmap对象以获取字符串,并将它们传递给cPickle.loads()
函数以恢复原始对象。
file.read(chunksize)
更快地从文件中读取chunksize字节。 您可以一直这样做,直到读取的字节数小于chunksize
(然后您就知道已经到达了文件结尾)。 例如:with open('datafile') as fin:
data = fin.read(chunksize)
process(data)
while len(data) == chunksize
data = fin.read(chunksize)
process(data)