【发布时间】:2012-03-01 21:03:26
【问题描述】:
我正在使用 django 1.3,并且我正在 Web 上下文之外(从命令行)运行脚本。
我的代码每次都会从数据库中读取 10000 个条目。
我注意到进程的内存使用量随着时间的推移越来越大。
我的代码是:
def getData(startIndex,chunkSize):
dataList =Mydata.objects.filter(update_date__isnull = True)[startIndex:startIndex+chunkSize]
return list(dataList)
if __name__ == '__main__':
chunkSize = 10000
startIndex = 0
dataSize = Mydata.objects.filter(update_date__isnull = True).count()
while startIndex < dataSize:
dataList = getData(startIndex,chunkSize)
startIndex += chunkSize
do_stuff(dataList)
我的问题是:我需要使用reset_queries() 和或connection.close()
这是内存使用量增加的原因吗?
【问题讨论】:
-
只是为了检查:你有
DEBUG = False吗? -
绝对是python进程在吃更多内存吗?您能单步执行脚本并查看哪些行导致内存增加
-
是的,它是占用内存的 python 进程。但它可能不是查询部分,它可能是 do_stuff 部分,我只是想确保不需要 reset_queries()跨度>
-
另外,尝试使用
queryset.iterator()而不是list(queryset)来明确地一次只读取一条记录。
标签: python django orm django-models memory-leaks