《Python编程基础》课件-6.6.1.1Python内存管理与垃圾回收基础_第1页
《Python编程基础》课件-6.6.1.1Python内存管理与垃圾回收基础_第2页
《Python编程基础》课件-6.6.1.1Python内存管理与垃圾回收基础_第3页
《Python编程基础》课件-6.6.1.1Python内存管理与垃圾回收基础_第4页
《Python编程基础》课件-6.6.1.1Python内存管理与垃圾回收基础_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python内存管理与垃圾回收基础教学目标1.了解Python内存管理

2.掌握

引用计数机制

3.了解对象的生命周期

4.了解sys.getrefcount的使用

5.了解垃圾回收机制

6.了解分代垃圾回收Python内存管理是自动的,由解释器处理对象分配和释放,避免手动管理如C语言。核心概念:Python对象(如列表、字典)在堆上分配,每个对象有引用计数器跟踪引用数。当计数为0,对象被释放。这防止内存泄漏,提高开发效率。例如,在脚本中创建变量时,Python自动分配内存。1、Python内存管理概述

#简单对象创建示例x=[1,2,3]#创建列表对象,分配内存,引用计数=1y=x#y引用x,计数增至2dely#删除y,计数减至1#当所有引用删除,对象释放内存引用计数是Python内存管理的核心,每次引用对象时计数增1,删除时减1。为0时释放。核心概念:在CPython中,sys.getrefcount()查看计数。优势:实时回收,简单。缺点:不处理循环引用(后续)。用于理解变量赋值如a=b增加计数。2.引用计数机制importsys#导入sys查看引用计数a="hello"#创建字符串,计数=1b=a#b引用a,计数=2print(sys.getrefcount(a))#输出:3(额外函数参数引用)delb#删除b,计数减1对象生命周期从创建(new/init)到销毁(del)。核心概念:创建时分配内存,引用计数管理生存期。销毁时调用__del__释放资源如文件句柄。理解这帮助调试终结器问题。注意__del__不保证调用顺序,用于资源清理而非逻辑。3.对象生命周期classMyClass:#定义类def__init__(self):#初始化,对象创建print("Objectcreated")def__del__(self):#终结器,对象销毁时调用print("Objectdestroyed")obj=MyClass()#创建,输出:Objectcreateddelobj#删除引用,计数=0,输出:Objectdestroyedsys.getrefcount()返回对象当前引用计数,用于调试内存。核心概念:函数本身临时增1计数,故实际计数-1。结合gc模块监控。可用它追踪泄漏,如循环中未释放对象。4.sys.getrefcount的使用importsys#导入syslst=[1,2]#创建列表,计数=1print(sys.getrefcount(lst))#输出:2(函数临时引用)lst.append(lst)#自引用,计数增,但创建循环print(sys.getrefcount(lst))#输出:3垃圾回收(GC)补充引用计数,处理无法回收的对象如循环引用。在Python中,使用分代GC,提高效率。核心概念:对象分三代,新对象在0代,存活多次晋升。阈值触发收集。GC自动运行,但可手动触发。5.垃圾回收介绍importgc#导入gc模块gc.collect()#手动触发垃圾回收,返回回收对象数print(gc.get_threshold())#输出阈值,如(700,10,10)#阈值控制收集频率分代GC假设大多数对象短暂存活,将对象分代:0代频繁收集,高代较少。核心概念:收集时使用标记-清除算法。优化长运行程序。可调整阈值测试性能。注意:GC暂停执行,影响实时应用。6.分代垃圾回收importgc#导入gcprint(gc.get_count())#输出当前代对象数,如(300,5,1)gc.set_threshold(700,10,10)#设置阈值,调整收集频率gc.collect(0)#只收集0代GC模块提供Python中控制垃圾回收的接口,通过gc.enable/disable管理自动回收,支持调试而không依赖默认。在Python环境中,这种使用入门允许查询对象,并在实际中用于测试而không依赖sys。其入门的核心在于get_objects列表对象,避免泄漏,并在实际脚本中诊断而không依赖工具。核心概念:GC模块控制回收;入门强调启用查询;使用包括对象列表7.GC模块使用入门importgc#导入gc.disable()#禁用自动GCobj={}#创建对象print(gc.get_objects()[-1])#输出最近对象,如{}gc.enable()#启用小结1.Python内存管理自动化,通过引用计数器管理对象生命周期

2.引用计数内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论