镇江网站建设推广,房屋装修设计师培训,wordpress好看的评论,2012服务器如何做网站文章目录 一、Python的生命周期 1、概念2、如何监听生命周期二、内存管理 1.存储2.垃圾回收3.引用计数一、生命周期#xff1a; 1、概念#xff1a;一个对象从创建到消亡的过程 当一个对象呗创建是#xff0c;会在内存中分配响应的内存空间进行存储 当这个对象不再使…文章目录 一、Python的生命周期 1、概念2、如何监听生命周期二、内存管理 1.存储2.垃圾回收3.引用计数一、生命周期 1、概念一个对象从创建到消亡的过程 当一个对象呗创建是会在内存中分配响应的内存空间进行存储 当这个对象不再使用为了节约内存会把这个对象释放 2、如何监听生命周期 1、__new__:当我们创建一个对象时用于给这个对象分配内存通过拦截这个方法可以修改创建对象的过程例如单例模式 使用使用装饰器使用了装饰器的类会变成单例类
def single_class(cls):instance {}def single(*args, **kwargs):if cls not in instance:instance[cls] cls(*args, **kwargs)return instance[cls]else:return instance[cls]return singlesingle_class
class Man(object):pass
man1 Man()
man2 Man()
print(man1)
print(man2) 2、__init__:实例化对象的时候执行此方法 3、__del__:进程结束的时候执行
二、内存管理机制
1.存储方面 1、万物皆对象 2、所有对象都会开辟内存存储 3、整形及短小字符Python会缓存不会创建多个相同对象 4、容器对象仅仅是其他对象的引用不是对象本身 2、垃圾回收 1、引用计数 1、概念一个对象记录着本身被引用的次数 2、描述当增加一个引用计数1当减少一个引用计数-1引用0时释放内存 3、计数1场景对象创建对象被引用对应被当做参数传入函数对象被当做元素放在容器中 4、计数-1场景被显试销毁引用别名被赋值覆盖离开作用域函数执行结束容器销毁 查看计数sys模块 2、垃圾回收 1、作用解决引用计数未释放的对象容器对象 2、底层机制 1、收集容器对象 通过双向连表引用 2、对每个容器通过变量gc_refs记录引用计数 3、找到引用他的容器然后计数-1 4、经过三个步骤如果计数为0就可以释放了 3、分代回收减少垃圾检测的频率新增对象达到一定数量才会触发 1、默认刚创建的对象属于0代 2、如果经历一代回收依然存活就划分下一代 3、回收周期顺序0代回收一定次数可自定义触发0代和1代回收1代回收一定次数触发0代1代2代回收 4、查看默认参数及自定义参数 gc gc.get_threshold() gc.set_threshold(700, 10, 5) 4、补充自定义参数设置 自定义设置
import gc
gc.disable()
print(gc.disable 开启状态, gc.isenabled())
gc.enable()
print(gc.enable 开启状态, gc.isenabled())
print(gc获取默认参数, gc.get_threshold())
gc.set_threshold(1000, 20, 10)
print(gc获取自定义参数, gc.get_threshold()) 输出结果
gc.disable 开启状态 False
gc.enable 开启状态 True
gc获取默认参数 (700, 10, 10)
gc获取自定义参数 (1000, 20, 10)