我正在尝试将一些文件加载到内存中。这些文件具有以下三种格式之一:
- string TAB int
- string TAB float
- int TAB float
实际上,它们是ngram静态文件,如果这有助于解决问题。例如:
i_love TAB 10
love_you TAB 12
目前,我正在进行的伪代码是
loadData(file):
data = {}
for line in file:
first, second = line.split('\t')
data[first] = int(second) #or float(second)
return data
令我惊讶的是,尽管磁盘中文件的总大小约为21 mb,但加载到内存中的进程占用了120-180 mb的内存!(整个Python应用程序没有将任何其他数据加载到内存中)。
这些文件不到10个,它们中大部分会保持在50-80k行左右,除了一个目前有数百万行的文件。
因此,我想要请教一种可以减少内存消耗的技术/数据结构:
- 有关压缩技术的任何建议?
- 如果我仍然使用字典,有没有办法减少内存消耗?是否可以像Java中的字典一样设置“负载因子”?
- 如果您有其他数据结构,我也愿意牺牲一些速度来减少内存。然而,这是一个时间敏感的应用程序,一旦用户输入他们的查询,我认为返回结果需要不超过几秒钟。关于这一点,我仍然很惊讶谷歌如何如此快速地进行谷歌翻译:他们必须使用了许多技术+大量服务器的计算能力吧?