使用Python加载大量数据到内存

-4 投票
3 回答
982 浏览
提问于 2025-04-15 20:07

我需要把大量数据加载到内存中,而且这些数据的结构是列表。有没有其他的方法可以做到这一点呢?谢谢!

3 个回答

0

如果数据太大,无法放进你电脑的内存里,你就需要分块读取这些数据。如果数据不算太大,你也可以选择这样做,不过把所有数据一次性读入内存可能更符合你的需求。如果你能在问题中多解释一下你的需求和数据的特点,那么你会得到比这个回答更有帮助的建议。

0

这些数据有没有什么结构,比如说是一大堆客户记录的列表,还是说就像一张图片、音频或视频那样的一个大块数据?如果是前者,你可能需要把这些数据整理成一个数据库。从Python 2.5开始,sqlite就已经包含在里面了,它可以处理很多数据的排序和筛选任务。

那么“大的”到底有多大呢?你可能会惊讶于Python一次能在内存中存放多少数据。请给我们更多关于你那大数据列表的细节。

2

逐行处理数据,比如说:

for line in open("file"):
    print "do processing of line:",line

或者如果你真的非常想一次性把所有数据加载到内存中,可以试试内存映射。

import mmap,os,re
bigfile = open( "file2" )
length = os.stat(bigfile.fileno()).st_size
try:
    mapping = mmap.mmap(bigfile.fileno(), length, mmap.MAP_PRIVATE, mmap.PROT_READ )
except AttributeError:
    mapping = mmap.mmap(bigfile.fileno(), 0, None, mmap.ACCESS_READ )
data = mapping.read(length)
# example, finding a pattern
pat =re.compile("pattern",re.M|re.DOTALL)
print pat.findall(data)

撰写回答