我正在使用 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()这就是内存使用量增加的原因吗?

最佳答案

我将从在您的查询中使用 onlydefer 方法开始。这两个用于仅检索您实际需要的字段,而不是所有字段。您的查询会稍微快一点并消耗更少的内存,因为不会从数据库中获取不需要的字段。

关于python - 我需要使用 django reset_queries(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9210078/

10-09 09:52