Python 内存泄漏与搁置
我使用shelve来存储数据,主要是我想快速检索的时间戳 我已经用40000个随机键填充了我的书架,看看它是如何运行的Python 内存泄漏与搁置,python,python-2.7,memory-leaks,shelve,Python,Python 2.7,Memory Leaks,Shelve,我使用shelve来存储数据,主要是我想快速检索的时间戳 我已经用40000个随机键填充了我的书架,看看它是如何运行的 dbfs = shelve.open(filePath) for i in range(0, 40000): key = "OD452_TP3_{}".format(i) dbfs[key] = datetime.datetime.now() dbfs.close() 它为我提供了一个大约6个月的文件: 5971968 May 24 16:06 dbfs.bi
dbfs = shelve.open(filePath)
for i in range(0, 40000):
key = "OD452_TP3_{}".format(i)
dbfs[key] = datetime.datetime.now()
dbfs.close()
它为我提供了一个大约6个月的文件:
5971968 May 24 16:06 dbfs.bin
然后删除文件中的所有内容:
dbfs = shelve.open(filePath)
for key in dbfs:
del dbfs[key]
dbfs.close()
文件并没有回到零,而是变大了:
6606848 May 24 16:07 dbfs.bin
我不断重复同样的操作,我看到了同样的行为。
内存永远不会释放,当我删除所有条目时,我可以额外使用大约10%的内存
我正要在我的平台上搁置所有内容来管理时间戳,但我不能有这种行为
我做错什么了吗
朱利安这实际上是很正常的行为——这取决于shelve使用的实际引擎。你的问题以前被问过-好的,我明白了。谢谢你知道我还能用些什么吗?没有这种行为?我只需要存储时间戳(大约10.000)并经常刷新它们。我想sqlite会是一个过度的杀手锏,我不明白你为什么不能使用shelve,因为新的密钥将取代旧的密钥,所以文件将不再增长。你确定吗?我尝试删除条目,然后读取,文件不断增加。一个好的解决方法是监视文件的大小,然后将我的所有“活动”密钥传输到一个新文件中,使其超过某个阈值。