退出函数后如何从 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 并运行它

函数退出后对象丢失

低功耗模式下的变量

如何在 C 中的 STM32 QEMU 调试器 eclipse 上从 RAM 内存执行函数?

MATLAB - 持久变量