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.优劣势

    优势:减小内存开销,省略申请内存空间的过程,提高执行效率
    劣势:创建驻留对象需要花费额外的开销
    
  • 相关阅读:
    docx python
    haozip 命令行解压文件
    python 升级2.7版本到3.7
    Pyautogui
    python 库搜索技巧
    sqlserver学习笔记
    vim使用
    三极管工作原理分析
    串口扩展方案+简单自制电平转换电路
    功率二极管使用注意
  • 原文地址:https://www.cnblogs.com/quqinchao/p/14543542.html
Copyright © 2011-2022 走看看