我正在使用 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()
这就是内存使用量增加的原因吗? 最佳答案
我将从在您的查询中使用 only 或 defer 方法开始。这两个用于仅检索您实际需要的字段,而不是所有字段。您的查询会稍微快一点并消耗更少的内存,因为不会从数据库中获取不需要的字段。
关于python - 我需要使用 django reset_queries(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9210078/