退出函数后如何从 ram 中删除 sqlalchemy
Posted
技术标签:
【中文标题】退出函数后如何从 ram 中删除 sqlalchemy【英文标题】:how can i remove sqlalchemy from ram after exiting function 【发布时间】: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 作弊码
【参考方案1】:
sqlalchemy 在客户端拥有缓冲区,您也可以在服务器端拥有缓冲区,这样 sqlalchemy 会释放缓冲区空间。这个命令会做。
conn = engine_.execution_options(stream_results=True).connect()
【讨论】:
以上是关于退出函数后如何从 ram 中删除 sqlalchemy的主要内容,如果未能解决你的问题,请参考以下文章
从 IAR stm32f2/f4 闪存复制函数到 ram 并运行它