zoukankan      html  css  js  c++  java
  • python的垃圾回收机制和析构函数__del__

    析构函数__del__定义:在类里定义,如果不定义,Python 会在后台提供默认析构函数。

    析构函数__del__调用

    A、使用del 显式的调用析构函数删除对象时:del对象名;                             

            class Foo:
            def __init__(self,x):
            self.x=x
            def __del__(self): #在对象资源被释放时触发
            print('-----del------')
            print(self)
            f=Foo(100000)
            del f

     B、当对象在某个作用域中调用完毕,跳出其作用域的同时析构函数也会被调用一次,这样可以用来释放内存空间。

    class Foo:
      def __init__(self,x):
      self.x=x
    def __del__(self): #在对象资源被释放时触发
      print('-----del------')
    print(self)
    f=Foo(100000)
    time.sleep(5) #time.sleep(5)执行完后,自动调用__del__()
     
    注意:__del__只是删除了对象的引用,比如上面del f 只是f对象不再执行实例数据的存储空间了,实例数据并没有被删除,删除实例数据需要python本身的垃圾回收机制;
     
    垃圾回收机制
    Python 采用垃圾回收机制来清理不再使用的对象;Python 提供gc模块释放
    不再使用的对象,Python 采用‘引用计数’ 的算法方式来处理回收,
    即:当某个对象在其作用域内不再被其他对象引用的时候,Python 就自动清除对象;
    Python 的函数collect()可以一次性收集所有待处理的对象(gc.collect())
  • 相关阅读:
    flask数据库
    python 百万级别类实例实现节省内存
    python定义一种新类型的元组
    python使用临时文件
    open函数 文件设置缓冲
    词频统计,字典成绩排序
    列表数组集合解析
    2019蓝桥杯Java第十题大学生B组——最短路径思想
    项目企业信息图谱分析有感——数据分析
    需求分析有感
  • 原文地址:https://www.cnblogs.com/yoyo008/p/9602962.html
Copyright © 2011-2022 走看看