python培训之内存是如何管理的?

发布时间:2022-10-19 09:37:48 人气:131 作者:多测师

  初学python的小伙伴一定会有这样的困惑,python中是如何进行内存管理的?如何进行垃圾清理的?本篇文章说一下这个问题,希望对学习python的小伙伴有帮助。

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

  下面是引用计数的知识:

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

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

  对象被创建:x = 3.14

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

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

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

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

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

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

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

python培训之内存是如何管理的?

  对象被从一个窗口对象中移除: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的时候,就会被解释器回收。当然在交互模式下,内存不会马上释放,重新启动解释器就会释放了。

  以上内容为大家介绍了python培训之内存是如何管理的?,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/


返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线