gpt4 book ai didi

python - python sqlite3 是否在交互模式下释放仅内存数据库?

转载 作者:太空宇宙 更新时间:2023-11-03 18:26:28 31 4
gpt4 key购买 nike

我今天查看了 sqlite3 的 Python 单元测试,发现了一些很棒的东西

sqlite.connect(":内存:")

这是一个非常酷的想法,它使单元测试更容易编写。但后来我开始想知道,sqlite3 是否总是释放已使用的内存? sqlite3 是否足够智能,可以在交互模式下解除分配?

最佳答案

OSX 事件监视器未报告正确的内存使用情况。使用 htop 查看正确的使用统计信息。

首先我以交互模式启动解释器

python -i

然后在我写的解释器中

import sqlite3 as sqlite
db = sqlite.connect(":memory:")
db.execute("create table test(id integer primary key, test_text text)")
for i in range(50000000):
db.execute("insert into test(test_text) values (?)", ("test",))

第一个屏幕截图是交互式 python 运行时的内存使用情况。内存使用量约为 488mb。

enter image description here

小提示,OSX 事件监视器将 python 解释器识别为“终端”,可能是因为它不检查子进程的内存使用情况(不查看 fork )。

enter image description here

第二个屏幕截图是在解释器中调用 exit() 之后的。内存使用量仍然约为 488mb 简而言之,解释器退出时内存不会被释放。

更新:原来的测试是3.4。刚刚确认 2.7。

更新2:再次尝试使用 htop 进行测试。 enter image description here

enter image description here

显然,教训不是 python.sqlite3 不会在交互模式下释放,而是你不应该使用 OSX 事件监视器来测试内存使用情况。

这里没什么可看的,继续走吧。

关于python - python sqlite3 是否在交互模式下释放仅内存数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23095221/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com