1 引用计数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43import sys import psutil import os import gc print(gc.get_threshold()) def showMemSize(tag): pid=os.getpid() p=psutil.Process(pid) info=p.memory_full_info() memory=info.uss/1024/1024 print('{} memory used:{} MB'.format(tag,memory)) pass # 验证循环引用的情况 def func(): showMemSize('初始化') a=[i for i in range(10000000)] b=[i for i in range(10000000)] a.append(b) b.append(a) showMemSize('创建列表对象 a b 之后') # print(sys.getrefcount(a)) # print(sys.getrefcount(b)) # del a # del b pass func() gc.collect() #手动是释放的 showMemSize('完成时候的') # sys.getrefcount() # a=[] # print(sys.getrefcount(a)) #两次 # b=a # print(sys.getrefcount(a)) #三次 # c=b # d=b # e=c # f=e # g=d # print(sys.getrefcount(a)) #八次
2 内存优化
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37# a=140 # b=140 # print(id(a)) # print(id(a)) # del a # del b # c=140 # print(id(c)) # biga=100000 # bigb=100000 # print(id(biga)) # print(id(bigb)) # del biga # del bigb # bigc=100000 # print(id(bigc)) # 大整数池和小整数池的区别是: # 1 从结果来看是一样的 # 2 大整数池是没有提前的创建好对象,是个空池子,需要我们自己去创建 # 创建好之后,会把整数对象保存到池子里面,后面都不需要再创建了 直接拿来使用 # 小整数池是提前将【-5,256】的数据都提前创建好 # 字符串的驻留共享机制intern机制 # sa='ab_c' # sb='ab_c' # sc='ab_c' # sd='ab_c' sa="a!b" sb="a!b" sc="a!b" sd="a!b" print(sa is sb) print(id(sa)) print(id(sb)) print(id(sc)) print(id(sd))
3 命令行参数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23import sys import argparse # print('参数个数为:', len(sys.argv), '个参数.') # print('参数列表:', str(sys.argv[1:])) # 创建一个解析器对象 parse=argparse.ArgumentParser(prog='my - 我自己的程序', usage='%(prog)s [options] usage', description = 'my-编写自定义命令行的文件',epilog = 'my - epilog') # 添加位置参数【必选参数】 parse.add_argument('name',type=str, help='你自己的名字') parse.add_argument('age',type=str,help='你的年龄') # 添加可选参数 parse.add_argument('-s','--sex', action='append',type=str,help='你的性别') # 限定一个范围 parse.add_argument('-s','--sex',default='男', choices=['男','femal','女','male'],type=str,help='你的性别') # print(parse.print_help()) result=parse.parse_args() #开始解析参数 print(result) # print(result.name,result.age,result.sex)
(2)账号登陆
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19import 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基本语法Day122 内存优化3 命令行参数的全部内容,更多相关python基本语法Day122内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复