![](/img/trans.png)
[英]Loading CSV file to NumPy memmap array uses too much memory
[英]Loading a .csv file in python consuming too much memory
我正在python中加载4gb .csv文件。 由于它的容量为4gb,所以我希望可以一次加载它,但是过了一会儿,我的32gb的内存就完全装满了。
难道我做错了什么? 为什么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)
您至少复制了csv的全部内容。
一次在a
,一次在b
。
关于该数据的任何其他工作都会消耗额外的内存来保存值,因此
您一旦拥有b
就可以del a
b
,但是请注意, pandas
库为您提供了read_csv
函数和一种对生成的Dataframe行进行计数的方法
您应该能够
a = list(reader)
可能会好一点。
因为它是Python :-D,所以最简单的方法之一是:为行创建自己的类,该类至少将数据存储在slots
,这样可以每行节省几百个字节(阅读器将它们放入dict,即使为空也是如此) .....如果走得更远,则可以尝试存储数据的二进制表示形式。
但是也许您可以在不保存整个数据数组的情况下处理数据? 它会消耗更少的内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.