【发布时间】:2013-10-26 16:48:05
【问题描述】:
这就是我正在做的:
reader = csv.reader(file)
fields = ["row_id","second_field","third_field",...]
for index, row in enumerate(reader):
mapped_row = dict(zip(fields,row))
DataEntry.objects.get_or_create(row_id=mapped_row["row_id"], defaults={
second_field = mapped_row["second_field"],
third_field = mapped_row["third_field"],
...
})
内存爆炸得不成比例!
在超过 50000 行之后,系统已经在使用 4GB,然后开始在 HDD 上进行交换,并且 Python 不会释放未使用的内存。
我尝试在每一行添加以下内容,但无济于事
del index
del row
del mapped_row
我正在使用 Python 2.7.5 和 Django 1.5。
知道发生了什么吗?
【问题讨论】:
-
您是否尝试过使用缓冲区读取或读取/写入块,例如每次超过 10000 次?
-
@ManuParra 感谢您的建议!由于 CSV 阅读器是一个生成器,它不应该让块变得不必要吗?
-
但是,你真的需要将所有数据都保存在内存中,因为你要存储对象 DataEntry。
-
是python消耗了所有内存吗?你的数据库引擎是什么?
标签: python django csv memory-management memory-leaks