我有一个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
,而在第一种情况下将起作用。
答案 0 :(得分:0)
我知道这并没有具体回答这个问题,但可能会为寻求解决的问题提供更好的解决方案:
我建议您使用Pandas进行此类工作吗? 这似乎更适合你尝试做的事情。 http://pandas.pydata.org/index.html
import pandas as pd
pd.read_csv('file.txt', sep=' ', skiprows=1)
然后做你所有的操作 Pandas是专门设计用于处理大型数据集并对其进行处理的软件包。如果您处理大数据,它可能会最终需要大量有用的功能。