zoukankan      html  css  js  c++  java
  • python 驻留机制

    1. 简介

    申明一个内存空间,后续申明相同的值,不会再开辟一块新的内存空间,指向已有的内存空间
    

    2.适用类型

    1. str
    2. int
    3. bool
    

    3.实现原理

    1. 系统维护一个记录驻留对象的字典
    2. 当某个对象需要驻留,查看在字典中是否存在,若存在就指向已存在的内存空间;
    3. 新驻留对象不存在于该字典中,开辟内存空间,记录该对象
    

    4.驻留时机

    1. 所有长度为 0 和长度为 1 的字符串都被驻留
    2. 字符串只在编译时进行驻留,而非运行时
    3. 字符串中只包含字母,数字或下划线时将会驻留
    4. 字符串长度不超过20位
    5.测试
    # str
    one = 'ffffffffffffffffffff'
    two = 'ffffffffffffffffffff'
    print(id(one), id(two))  # 42768184 42768184
    
    # int
    three = 34567
    four = 34567
    print(id(three), id(four))  # 4697808 4697808
    
    # bool
    five = True
    six = True
    print(id(five), id(six))  # 497676512 497676512
    
    # 超过20位
    vv = "s" * 30
    bb = "s" * 30
    print(id(vv), id(bb))  # 35820848 35821088
    
    # 自己手动驻留
    import sys
    vv = sys.intern("s" * 30 + "666")
    bb = sys.intern("s" * 30 + "666")
    print(id(vv), id(bb))  # 38382824 38382824
    

    5.优劣势

    优势:减小内存开销,省略申请内存空间的过程,提高执行效率
    劣势:创建驻留对象需要花费额外的开销
    
  • 相关阅读:
    git 拉取开发代码
    android webview
    H5 元素定位
    Python中模块
    服务器1
    活动
    宝塔面板-阿里部署
    最新版Xshell、Xftp注册机NetSarang
    最新版Navicat Premium激活,附激活工具
    9月29更新美版T-mobile版本iPhone7代和7P有锁机卡贴解锁方法
  • 原文地址:https://www.cnblogs.com/quqinchao/p/14543542.html
Copyright © 2011-2022 走看看