开发者社区> 问答> 正文

python怎么释放内存

python怎么释放内存

展开
收起
云计算小粉 2018-05-10 20:10:54 5407 0
2 条回答
写回答
取消 提交回答
  • 一句话。

    del 对象。

    用del销毁对象,来释放内存。

    2019-11-07 11:29:06
    赞同 展开评论 打赏
  • 最方便的语言,最简洁的简介

    关于Python中的内存释放问题

    首先就不得不提到Python解释器在何种情况下会释放变量的内存。Python引用了内存计数这一简单的计数来控制。

    下面是引用计数的知识:

    1) 增加引用计数 当对象被创建并(将其引用)赋值给变量时,该对象的引用计数被设置为1。

    对象的引用计数增加的情况:

    对象被创建:x = 3.14

    另外的别名被创建:y = x

    被作为参数传递给函数(新的本地引用):foobar(x)

    成为容器对象的一个元素:myList = [123, x, 'xyz']

    2) 减少引用计数 对象的引用计数减少的情况:

    一个本地引用离开了其作用范围。如foobar()函数结束时

    对象的别名被显式销毁:del y

    对象的一个别名被赋值给其他对象:x = 123

    对象被从一个窗口对象中移除:myList.remove(x)

    窗口对象本身被销毁:del myList

    3) del语句 Del语句会删除对象的一个引用,它的语法如下:del obj[, obj2[, ...objN]]

    例如,在上例中执行del y会产生两个结果:

    从现在的名称空间中删除y

    x的引用计数减1

    import sys

    x = 3.14
    print("原始引用值:", sys.getrefcount(x))
    y = x
    print("被y引用后:", sys.getrefcount(x))

    x = 4.0
    print("重新赋值后:", sys.getrefcount(x))

    del y
    print("删除y引用后:", sys.getrefcount(x))
    原始引用值: 3
    被y引用后: 4
    重新赋值后: 3
    删除y引用后: 3
    当一个变量的引用计数为0的时候,就会被解释器回收。当然在交互模式下,内存不会马上释放,重新启动解释器就会释放了。

    2019-07-17 22:23:32
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载