相关疑难解决方法(0)

Python:减少字典的内存使用量

我正在尝试将几个文件加载到内存中.这些文件具有以下3种格式之一:

  • string TAB int
  • 字符串TAB浮点数
  • int TAB float.

实际上,它们是ngram静态文件,以防这有助于解决方案.例如:

i_love TAB 10
love_you TAB 12
Run Code Online (Sandbox Code Playgroud)

目前,我正在做的伪代码是

loadData(file):
     data = {}
     for line in file:
        first, second = line.split('\t')
        data[first] = int(second) #or float(second)

     return data
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,虽然磁盘中文件的总大小约为21 MB,但当加载到内存中时,该过程需要120 - 180 MB的内存!(整个python应用程序不会将任何其他数据加载到内存中).

只有不到10个文件,大多数文件在大约50-80k行保持稳定,除了一个目前有数百万行的文件.

所以我想要一个技术/数据结构来减少内存消耗:

  • 有关压缩技术的建议吗?
  • 如果我仍然使用dict,有没有办法减少内存?是否可以像Java dict中那样设置"加载因子"?
  • 如果你有其他一些数据结构,我也愿意交换一些速度来减少内存.然而,这是一个时间敏感的应用程序,所以一旦用户输入他们的查询,我认为花费超过几秒钟来返回结果是不太合理的.关于这一点,我仍然惊讶于谷歌如何设法如此快速地进行谷歌翻译:他们必须使用大量技术+大量服务器的力量?

非常感谢你.我期待着你的建议.

python memory compression dictionary n-gram

45
推荐指数
4
解决办法
4万
查看次数

标签 统计

compression ×1

dictionary ×1

memory ×1

n-gram ×1

python ×1