本节知识点:引用计数机制;python中的循环数据结构以及引用技术;python中的GC模块;python内存优化;python pep8规范 ;python命令行参数
一:引用计数机制:
概念:是一中垃圾收集机制,python中采用技术机制为主,标记-清除和分带收集二种机制为辅的策略
引用计数:
优点:1.简单;2.实时性:一旦没有引用,内存就直接释放了。不用像其他机制需要等到待定时机;处理回收内存的时候时间分摊到了平时
缺点:维护引用计数会消耗资源;循环引用的时候无法自动回收
二:GC模块
GC负责的主要任务:1.为新生成的对象分配内存 2.识别那些垃圾对象 3.从垃圾机制对象那回收内存
内存泄漏:
概念:申请了某些内存,但是忘记释放。造成内存浪费
标记清除和分代收集:
背景:引用计数会在循环引用时导致内存泄漏,所以产生了新的回收机制
标记清除:首先标记对象(垃圾检测),然后清楚对象(垃圾回收)
循环引用时,并不会触发引用计数的机制的案列
手动调用gc垃圾回收:
有三种情况会触发垃圾回收:
1.当gc模块的计数器达到阀值的时候,自动回收垃圾
2.调用gc.collect(),手动回收垃圾
3.程序退出的时候,python解释器来回收垃圾
三:python内存优化
小整数与大整数对象池:python为了优化速度,使用了小整数对象池,避免为了整数频繁的申请销毁内存空间。
python对小整数池的定义是【-5,256】这些整数对象是提前建立好的,不会被垃圾回收
大整数池和小整数池的区别:
1.从结果来看是一样的
2.大整数池是没有提前创建好对象,是个空池子,需要我们自己去创建,创建好之后,会把整数对象保存到池子里面,后面都不需要在创建了,直接使用
3.小整数池是提前将【-5,256】的数据提前创建好了
四:python pep8规范
pep8原则:代码布局;缩进;行宽;空行;源文件编码;模块的导入(from xx import xx;from xx imoort *;importxx);注释;命名规范
五:命令行参数-sys模块
在使用python开发脚本,作为一个运维工具,或者其他工具需要接受用户参数运行时,就可以用到命令行传参的方式
调用方式:终端输入指令--python 文件名.py
argv返回命令行参数是一个列表,第一元素的.py的文件名。如不需要第一个参数则切片
命令行参数-argparse模块
该模块可以轻松编写用户的命令行界面,该程序定于了它需要的参数,argparse并将找出如何分析这些参数sys.argv
add_argument添加参数选项:
metaver:帮助信息中显示参数名称
const:保存一个常量
default:默认值
typs:参数类型,默认是str
choices:设置参数值的范围
required:该选项是否必选,默认为True
默认与选择参数:
练习:实现命令行登录系统【如mysql登录 mysql-u-root-r 123456】



