Python 内存泄漏与搁置

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

我使用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.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,因为新的密钥将取代旧的密钥,所以文件将不再增长。你确定吗?我尝试删除条目,然后读取,文件不断增加。一个好的解决方法是监视文件的大小,然后将我的所有“活动”密钥传输到一个新文件中,使其超过某个阈值。