• 技术文章 >Python技术 >Python高级

    python如何进行内存管理

    2021-04-14 15:56:48原创6138

    banner90.png

    关于首先python进行内存管理就不得不提到Python解释器在何种情况下会释放变量的内存。Python引用了内存计数这一简单的计数来控制。当一个变量的引用计数为0的时候,就会被解释器回收。当然在交互模式下,内存不会马上释放,重新启动解释器就会释放了。

    下面是引用计数的知识:

    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

    关于python内存相关文章推荐阅读:

    python如何控制内存

    python的内存是如何管理的?

    (推荐操作系统:windows7系统、Python 3.9.1,DELL G3电脑。)

    专题推荐:内存管理 python
    上一篇:python字典合并特性是什么 下一篇:python WSGI规范是什么

    相关文章推荐

    • 使用多线程让Python应用飞起来• Elasticsearch基本介绍及其与Python的对接实现• Python使用Pillow添加图片水印• 深究Python中的asyncio库-线程并发函数• 深究Python中的asyncio库-shield函数

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网