0

这就是我正在做的事情:

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。


知道发生了什么吗?

4

1 回答 1

1

在写入任何数据之前,您似乎正在将所有数据读入字典。没有明显的理由这样做。尝试读取/写入不同大小的块(一次 1 行、10、100 等),看看哪种块大小提供了您喜欢的内存和速度性能。

于 2013-10-26T17:18:42.223 回答