【发布时间】:2022-01-20 00:25:17
【问题描述】:
您好,我想使用 sqlalchemy 连接到我的表,获取一些列,对它们进行处理,然后继续。问题是当我退出该功能时,我的 ram 空间没有打开。这是一个虚拟示例。
from sqlalchemy import create_engine
import gc
mem = !free
dic = {}
dic_conn = {}
print(mem[1])
engine_ = create_engine(psql_string)
for tb in ['tb_1', 'tb_2', 'tb_3', 'tb_4',]:
conn = engine_.connect()
dic[tb] = conn.execute("select * from tb".format(tb))
dic_conn[tb] = conn
for k in dic_conn.keys(): dic_conn[k].close(); dic_conn[k] = None
for k in dic.keys(): dic[k].close(); dic[k] = None
engine_.dispose()
del dic_conn
del dic
del engine_
gc.collect()
mem = !free
print(mem[1])
我尝试了我能想到的任何方法,请告诉我如何释放内存
【问题讨论】:
-
这能回答你的问题吗? Releasing memory in Python
-
不,不是因为它不是 python 的东西,它似乎是 sql alchemy 的东西。 sqlalchemy 不会释放内存
-
连接
conn永远不会关闭,因此可能会打开 postgres 连接,这将显示为 Python 进程。除此之外,不是很清楚您的代码到底在演示什么。mem = !free不是有效的语法。您在哪里看到 SQLAlchemy 保留 RAM?你怎么知道是 SQLAlchemy? -
!free 是一个 jupyter 作弊码
标签: python sqlalchemy garbage-collection