我有一个Django项目,我需要从postgres DB中获取数据,然后使用它进行操作(postgres中为1GB)。在那之后,当我执行所有postgres数据时,我需要增加我的RAM,在另一个操作之后,像这样的RAM也增加等等...
如果我有64 GB的内存,在执行postgres数据后,我的内存增加了~1GB,那么如果我运行该函数10次,我的内存将增加~ 10 GB
我尝试用del
或gc
删除Python中的所有变量,但之后我的RAM也满了。
清除内存的唯一方法是关闭Django项目。
在我从postgres执行数据后,是否有清除RAM的选项?
这是一个从postgres获取数据的例子。我使用psycopg2
库。这是Django视图,在我进入这个视图后,它运行了这段代码。
from django.http import HttpResponse
import psycopg2
def index(request):
con = psycopg2.connect(host="localhost", database="database", user="postgres", password="postgres")
cur = con.cursor()
text = "select * from table"
cur.execute(text)
text = cur.fetchall()
cur.close()
con.close()
test_len = len(text)
del text
return HttpResponse(test_len)
每次我刷新页面时,我都会从表中获取所有数据,并且RAM增加
再举一个例子:
当我运行python3 mnanage.py runserver
我的内存是2GB
,在我刷新页面后,它增加到13GB
,然后下降到7.7GB
,在那之后,如果我一次又一次地重新刷新,我仍然会在7.7GB
上获得内存,但在我获得数据后,我删除了这个变量。为什么我仍然得到7.7GB
内存?
1条答案
按热度按时间vohkndzv1#
你应该在查询后使用
.iterator()
。你可以阅读here