加入收藏 | 设为首页 | 会员中心 | 我要投稿 唐山站长网 (https://www.0315zz.com.cn/)- 数据安全、数据开发、文字识别、图像处理、媒体智能!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

使用弱引用优化 Python 程序的内存占用?

发布时间:2021-03-04 13:28:35 所属栏目:传媒 来源:互联网
导读:中monkey_obj, tiger_obj, panda_obj都是对象。在我们的程序中,可能会传入不同的字符串来读取不同的对象。当我们把这些对象放进字典中的时候,它的引用计数已经被+1了。 但是,panda_obj这个对象比较特殊,它只会在程序运行的早期被查出来使用1次。之后就再

中monkey_obj, tiger_obj, panda_obj都是对象。在我们的程序中,可能会传入不同的字符串来读取不同的对象。当我们把这些对象放进字典中的时候,它的引用计数已经被+1了。

但是,panda_obj这个对象比较特殊,它只会在程序运行的早期被查出来使用1次。之后就再也不会使用了。

但由于这个对象被放在字典里面,所以这个对象的引用计数始终大于0,Python 的垃圾回收机制就会认为这个对象还会被使用,于是它就会始终占用内存。

在数据处理领域或者图像处理领域,经常会出现字典的值占用大量内存的情况,这种情况就会导致内存的浪费。

为了解决这种情况,我们可以使用 Python 自带的weakref模块,它里面有一个WeakValueDictionary,就是用来处理这种情况的。
 

但有些情况下,我们的代码可能在不经意间导致某些实际上我们不再使用的对象的引用计数始终大于0,从而无法被垃圾回收。

我们举个例子:

很多人喜欢使用字典来存放一些数据,假设我现在有一个字典是这样的:

(编辑:唐山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读