文章目录

  • 五、Python垃圾回收
  • 1.引用计数(主)
  • 2.GC负责的主要任务
  • 3.标记-清除
  • 4.引用计数不能回收的案例分析
  • 5.分代收集
  • 6.GC的阈值
  • 7.GC垃圾回收自动触发机制
  • 7.内存优化
  • 8.pep8原则
  • 9.命令行参数


五、Python垃圾回收

python中cycle函数的应用 python cycle函数_垃圾回收

1.引用计数(主)

python中cycle函数的应用 python cycle函数_python_02

import sys
a=[]
print(sys.getrefcount(a))#两次引用计数

python中cycle函数的应用 python cycle函数_python_03


python中cycle函数的应用 python cycle函数_垃圾回收_04

2.GC负责的主要任务

python中cycle函数的应用 python cycle函数_python中cycle函数的应用_05

3.标记-清除

python中cycle函数的应用 python cycle函数_python中cycle函数的应用_06

4.引用计数不能回收的案例分析

python中cycle函数的应用 python cycle函数_垃圾回收_07


python中cycle函数的应用 python cycle函数_引用计数_08

5.分代收集

python中cycle函数的应用 python cycle函数_引用计数_09

python中cycle函数的应用 python cycle函数_引用计数_10

6.GC的阈值

python中cycle函数的应用 python cycle函数_垃圾回收_11


有三种情况会触发垃圾回收:

1.当gc模块的计数器达到阀值的时候,自动回收垃圾

2.调用gc. collect(),手动回收垃圾

3.程序退出的时候,python解释 器来回收垃圾

7.GC垃圾回收自动触发机制

python中cycle函数的应用 python cycle函数_垃圾回收_12


python中cycle函数的应用 python cycle函数_垃圾回收_13

7.内存优化

  • 大整数池和小整数池的区别是:
  1. 从结果来看是一样的
  2. 大整数池是没有提前的创建好对象,是个空池子,需要我们自己去创建,创建好之后,会把整数对象保存到池子里面,后面都不需要再创建了直接拿来使用,小整数池是提前将[-5,256]的数据都提前创建好

8.pep8原则

python中cycle函数的应用 python cycle函数_python中cycle函数的应用_14


python中cycle函数的应用 python cycle函数_python_15


python中cycle函数的应用 python cycle函数_垃圾回收_16


python中cycle函数的应用 python cycle函数_引用计数_17

9.命令行参数

python中cycle函数的应用 python cycle函数_垃圾回收_18

import sys
print(len(sys.argv))
print(str(sys.argv))

python中cycle函数的应用 python cycle函数_垃圾回收_19


python中cycle函数的应用 python cycle函数_引用计数_20


python中cycle函数的应用 python cycle函数_引用计数_21


python中cycle函数的应用 python cycle函数_垃圾回收_22


python中cycle函数的应用 python cycle函数_python_23


python中cycle函数的应用 python cycle函数_引用计数_24

  • 案例
import argparse

#创建一个解析器对象
parse=argparse.ArgumentParser(prog= '系统登录',usage= '%(prog)s[options] usage',description='系统自定义命令行的文件',epilog= 'my - epilog')
#添加位置参数[必选参数]
parse.add_argument('loginType ',type=str, help=' 登录系统类型')
#添加可选参数
parse.add_argument('-u',dest='user',type=str,help= '你的用户名')
parse.add_argument('-p',dest='pwd',type=str,help= '你的密码')
result=parse.parse_args() #开始解析参数
if (result.user=='root' and result.pwd== '111111' ):
    print( ' login sucess!' )
else:
    print('login fail ' )
python test.py mysql -u root -p 111111