python 字典操作 内存占用,python - 如何强行释放字典使用的内存? - SO中文参考 - www.soinside.com...

我正在研究一个Python脚本,该脚本查询几个不同的数据库以整理数据并将所述数据持久保存到另一个数据库。该脚本从大约15个不同数据库中的数百万条记录中收集数据。为了尝试加快脚本速度,我提供了一些缓存功能,归结为拥有可容纳一些经常查询的数据的字典。字典包含键值对,其中键是根据数据库名称,集合名称和查询条件生成的哈希,而值是从数据库检索的数据。例如:

[{123456789: {_id: '1', someField: 'someValue'}},其中123456789是哈希,{_id: '1', someField: 'someValue'}是从数据库检索到的数据。

将这些数据保存在本地字典中意味着,我不必每次都查询数据库(这可能很慢,而不必每次都查询数据库),而是可以在本地访问一些经常查询的数据。如前所述,查询很多,因此字典可能会变得非常大(几个GB)。我有一些代码使用psutil来查看运行脚本的计算机上有多少可用内存,如果可用内存低于某个阈值,则清除字典。清除字典的代码是:cached_documents.clear()

cached_documents = None

gc.collect()

cached_documents = {}

我应该指出,cached_documents是一个局部变量,该变量被传递到所有访问或添加到缓存的方法中。不幸的是,这似乎不足以适当地释放内存,因为即使调用了上面的代码后,Python仍然占用大量额外的内存。您可以在此处查看内存使用情况的配置文件:

eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9RU21WOC5wbmcifQ==

[值得注意的事实是,清除字典的前几次,我们向系统释放了大量内存,但是随后的每次时间似乎都更少,这时内存使用量趋于平缓,因为缓存被非常频繁地清除。因为Python占用大量内存,所以可用内存在阈值之内。

在清除字典时是否有一种方法可以强制Python正确释放内存,从而避免使用扁平衬里?任何提示表示赞赏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值