当数字是整数时,为python字典留出内存

时间:2016-01-07 18:19:58

标签: python dictionary memory

我有一个python代码,假设将大文件读入内存中的字典并执行一些操作。令我困惑的是,只有一种情况是内存不足:当文件中的值是整数时......

我的文件结构如下:

string value_1 .... value_n

我的文件大小从2G到40G不等。我有50G内存,我尝试读取文件。当我有这样的事情: string 0.001334 0.001473 -0.001277 -0.001093 0.000456 0.001007 0.000314 ...,其中n = 100且行数等于10M,我能够相对快速地将其读入内存。文件大小约为10G。但是,当我string 4 -2 3 1 1 1 ...具有相同的维度(n = 100)和相同的行数时,我无法将其读取到内存中。

for line in f:
    tokens = line.strip().split()
    if len(tokens) <= 5: #ignore w2v first line
      continue
    word = tokens[0]
    number_of_columns = len(tokens)-1

    features = {} 
    for dim, val in enumerate(tokens[1:]):
      val = float(val)
      features[dim] = val
    matrix[word] = features

这将在第二种情况下导致Killed,而在第一种情况下将起作用。

1 个答案:

答案 0 :(得分:0)

我知道这并没有具体回答这个问题,但可能会为寻求解决的问题提供更好的解决方案:

我建议您使用Pandas进行此类工作吗? 这似乎更适合你尝试做的事情。 http://pandas.pydata.org/index.html

import pandas as pd

pd.read_csv('file.txt', sep=' ', skiprows=1)

然后做你所有的操作 Pandas是专门设计用于处理大型数据集并对其进行处理的软件包。如果您处理大数据,它可能会最终需要大量有用的功能。