Leo*_*opd 7 python django performance django-models django-south
我需要在一个大的(5米行)django表中添加一个新列.我有一个南方schemamigration创建了新专栏.现在我正在编写一个datamigration脚本来填充新列.看起来像这样.(如果您不熟悉南迁移,只需忽略orm.模型名称的前缀.)
print "Migrating %s articles." % orm.Article.objects.count()
cnt = 0
for article in orm.Article.objects.iterator():
if cnt % 500 == 0:
print " %s done so far" % cnt
# article.newfield = calculate_newfield(article)
article.save()
cnt += 1
Run Code Online (Sandbox Code Playgroud)
我从切换objects.all,以objects.iterator减少内存的需要.但是当我运行这个脚本时,某些东西仍在咀嚼着巨大的内存.即使上面注释了实际有用的行,脚本仍然会增长到使用10 GB以上的ram,然后才能在表格中走得很远而且我放弃了它.
好像在内存中持有某些东西.我该如何运行它,这不是记忆猪?
FWIW,我使用的是python 2.6,django 1.2.1,南0.7.2,mysql 5.1.
确保settings.DEBUG设置为False.DEBUG=True特别是在数据库密集型操作中填充内存,因为它存储了在视图中发送到RDBMS的所有查询.
使用Django 1.8时,它不应该是必需的,因为现在存储了9000个硬编码的最大查询,而不是之前的无限数.
| 归档时间: |
|
| 查看次数: |
4548 次 |
| 最近记录: |