我在python中加载4gb .csv文件。因为它是4gb我预计可以立即加载它,但过了一会儿我的32gb ram完全填满了。
我做错了吗?为什么4gb在ram方面变得如此之大?
是否有更快的方式加载此数据?
fname = "E:\Data\Data.csv"
a = []
with open(fname) as csvfile:
reader = csv.reader(csvfile,delimiter=',')
cont = 0;
for row in reader:
cont = cont+1
print(cont)
a.append(row)
b = np.asarray(a)
答案 0 :(得分:1)
您复制了csv的全部内容至少两次。
进入a
并再次进入b
。
对该数据的任何额外工作都会消耗额外的内存来保存值
您del a
后可以b
,但请注意pandas
库为您提供read_csv
函数以及计算生成的Dataframe行数的方法
答案 1 :(得分:0)
你应该可以做一个
a = list(reader)
可能会好一点。
答案 2 :(得分:0)
因为它是Python :-D最简单的方法之一:为行创建自己的类,它至少会在slots
中存储数据,每行可以节省几百个字节(读者将它们放入dict中,即使是空的也有点大......如果走得更远,你可能会尝试存储数据的二进制表示。
但也许你可以处理数据 而不用 来保存整个数据阵列?它会消耗更少的内存。