我正在尝试将几个文件加载到内存中。这些文件具有以下 3 种格式之一:
- 字符串制表符 int
- 字符串制表符浮动
- int 制表符浮动。
实际上,它们是 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 行左右,除了一个文件目前有数百万行。
所以我想要求一种技术/数据结构来减少内存消耗:
- 对压缩技术有什么建议吗?
- 如果我仍然使用dict,有什么办法可以减少内存?是否可以像在 Java 中为 Python dict 设置“负载因子”?
- 如果你有一些其他的数据结构,'我也愿意牺牲一些速度来减少内存。然而,这是一个时间敏感的应用程序,所以一旦用户输入他们的查询,我认为花费超过几秒钟的时间来返回结果是不太合理的。关于这一点,我仍然对谷歌如此迅速地完成谷歌翻译感到惊讶:他们一定是使用了很多技术+大量服务器的力量?
非常感谢你。我期待您的建议。