精华内容
下载资源
问答
  • 参考文章 用sys包中的sys.getsizeof(数据类型)查看内存大小 输出的结果单位是byte

    参考文章
    用sys包中的sys.getsizeof(数据类型)查看内存大小
    输出的结果单位是byte

    展开全文
  • 接到一个很有意思的任务,给了我一串内存数据的文档,要把它转为看得懂的明文。 我们可以借助hex工具查看这些字符的16进制。 int在内存里面是占4个字节,例如图中的0x64代表右边的字符d。 所以我们现在需要四...

    接到一个很有意思的任务,给了我一串内存数据的文档,要把它转为看得懂的明文。

    我们可以借助hex工具查看这些字符的16进制。

    int在内存里面是占4个字节,例如图中的0x64代表右边的字符d。

    所以我们现在需要四个四个分组处理,总共有len(file)/4组,每一组对应着file里面字符的位置为[4*n:4*(n+1)]。理清楚了这层关系就好做了,我们只需要用ord函数将字符转化为对应的ASCII数值。注意一个字节是8位,所以在高位向低位转化时要乘以256(2^8),所以代码如下:

    复制代码
    dat=[]
    myfile=open('c:\\test.txt','rb').read()
    for n in range((len(myfile)/4)):
        x=myfile[4*n:4*(n+1)]
        xvalue=0
        for m in range(4):
            xvalue += ord(x[m])*(256**m)
        dat.append(xvalue)
    for item in dat:
        print item
    复制代码

    最后我们可以看到这是一些日期相关的数据

    转载于:https://www.cnblogs.com/liyangqiu/p/6390294.html

    展开全文
  • 这篇文章主要是对python中的数据进行认识,对于很多初学者来讲,其实数据的认识是最重要...(id函数:你可以通过python的内置函数 id() 来查看对象的身份(identity),这个所谓的身份其实就是 对象 的内存地址) 一、引

    这篇文章主要是对python中的数据进行认识,对于很多初学者来讲,其实数据的认识是最重要的,也是最容易出错的。本文结合数据与内存形态讲解python中的数据,内容包括:

    • 引用与对象
    • 可变数据类型与不可变数据类型
    • 引用传递与值传递
    • 深拷贝与浅拷贝

    id函数:你可以通过python的内置函数 id() 来查看对象的身份(identity),这个所谓的身份其实就是 对象 的内存地址

    一、引用与对象:引用与对象的关系:
    这里写图片描述

    #创建两个对象
    name1='wupeiqi'
    name2='alex'

    这里写图片描述

    对象:当创建数据对象时,在内存中会保存对象的值,这个值就是对象自己;(字符串对象:”wupeiqi”)
    引用:对象保存在内存空间,外部想要使用对象的值,需要使用引用,就是‘name1’,’name2’。内存会保存对象的引用数量,当某个对象的引用数量为0时,对象会被回收。

    二、可变数据类型与不可变数据类型
    1,数据分类:

    • 可变数据类型:列表list和字典dict
    • 不可变数据类型:整型int、浮点型float、字符串型string和元组tuple

    这里的可变不可变,是指内存中的那块内容(value)是否可以被改变。如果是不可变类型,在对对象本身操作的时候,必须在内存中新申请一块区域(因为老区域不可变)。如果是可变类型,对对象操作的时候,不需要再在其他地方申请内存,只需要在此对象后面连续申请(+/-)即可,也就是它的address会保持不变,但区域会变长或者变短。

    (1)python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象;
    (2)可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。”

    2,不可变数据类型:不可变是指对象本身的值是不可变的(当你创建a=1整型对象,用a去引用它,内存中的对象1是不变得,当执行a=2时,只是重新创建了对象2,用a引用,如果1对象没有其他引用会被回收)

    >>> x = 1  
    >>> id(x)  
    31106520  
    >>> y = 1  
    >>> id(y)  
    31106520  
    >>> x = 2  
    >>> id(x)  
    31106508  
    >>> y = 2  
    >>> id(y)  
    31106508  
    >>> z = y  
    >>> id(z)  
    31106508  

    解释:这里的不可变大家可以理解为x引用的地址处的值是不能被改变的,也就是31106520地址处的值在没被垃圾回收之前一直都是1,不能改变,如果要把x赋值为2,那么只能将x引用的地址从31106520变为31106508,相当于x = 2这个赋值又创建了一个对象,即2这个对象,然后x、y、z都引用了这个对象,所以int这个数据类型是不可变的,如果想对int类型的变量再次赋值,在内存中相当于又创建了一个新的对象,而不再是之前的对象。从下图中就可以看到上面程序的过程。
    这里写图片描述

    3,可变对象:可变是指对象本身的值是可变的list,dict对象的值其实是引用了其他对象,当改变对象的值时,其实是引用了不同的对象)

    >>> a = [1, 2, 3]  
    >>> id(a)  
    41568816  
    >>> a = [1, 2, 3]  
    >>> id(a)  
    41575088  
    >>> a.append(4)  
    >>> id(a)  
    41575088  
    >>> a += [2]  
    >>> id(a)  
    41575088  
    >>> a  
    [1, 2, 3, 4, 2]  

    解释:(1)进行两次a = [1, 2, 3]操作,两次a引用的地址值是不同的,也就是说其实创建了两个不同的对象,这一点明显不同于不可变数据类型,所以对于可变数据类型来说,具有同样值的对象是不同的对象,即在内存中保存了多个同样值的对象,地址值不同。
    (2)我们对列表进行添加操作,分别a.append(4)和a += [2],发现这两个操作使得a引用的对象值变成了上面的最终结果,但是a引用的地址依旧是41575088,也就是说对a进行的操作不会改变a引用的地址值,只是在地址后面又扩充了新的地址,改变了地址里面存放的值,所以可变数据类型的意思就是说对一个变量进行操作时,其值是可变的,值的变化并不会引起新建对象,即地址是不会变的,只是地址中的内容变化了或者地址得到了扩充。下图对这一过程进行了图示,可以很清晰地看到这一过程。
    这里写图片描述

    三、引用传递与值传递:可变对象为引用传递,不可变对象为值传递。(函数传值)
    1,引用传递:当传递列表或者字典时,如果改变引用的值,就修改了原始的对象。

    # 添加了一个string类型的元素添加到末尾
    
    def ChangeList(lis):
        lis.append('hello i am the addone')
        print lis
        return
    
    lis = [1, 2, 3]
    ChangeList(lis)
    print lis
    
    输出:
    [1,2,3, 'hello i am the addone']
    
    [1,2, 3,'hello i am the addone']

    2,值传递:当传递不可变对象时,如果改变引用的值,只是创建了不同的对象,原始对象并没有改变。

    def ChangeString(string):
        string = 'i changed as this'
        print string
        return
    
    string = 'hello world'
    ChangeString(string)
    print string
    
    输出:
    i changed as this
    
    hello world

    四、深拷贝与浅拷贝:
    copy.copy() 浅拷贝;copy.deepcopy() 深拷贝。浅拷贝是新创建了一个跟原对象一样的类型,但是其内容是对原对象元素的引用。这个拷贝的对象本身是新的,但内容不是拷贝序列类型对象(列表\元组)时,默认是浅拷贝。

    1,赋值拷贝:
    赋值,只是创建一个变量,该变量指向原来内存地址:n4 = n3 = n2 = n1 = “123/’Wu’”
    这里写图片描述

    2,浅拷贝:在内存中只额外创建第一层数据

    import copy
    n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
    n3 = copy.copy(n1)

    这里写图片描述

    import copy
    a = [1,[[2,3],5],3]
    b = a.copy()    #copy.copy(a)
    
    print(id(a[1]))
    print(id(b[1]))
    
    c = copy.deepcopy(a)
    print(id(c[1]))
    
    输出:
    3021497843400
    3021497843400
    3021497854728

    3,深拷贝:在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)

    import copy
    n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
    n4 = copy.deepcopy(n1)

    这里写图片描述

    参考文献:
    http://blog.csdn.net/dan15188387481/article/details/49864613
    https://www.cnblogs.com/lfpython/p/7207747.html
    https://www.cnblogs.com/huamingao/p/5809936.html
    https://www.cnblogs.com/jiangzhaowei/p/5740913.html

    展开全文
  • python int类数据内存大小

    千次阅读 2018-09-29 18:18:22
    主要原因来自于python 基本数据变量都是对象,具有更复杂的结构体,而且python2,python3,操作系统位数不同还有差异,可以利用 sys.getsizeof(x)函数查看占用的字节数,下面是python3.5,windows 64位 内存占用情况,...

    Python是全面向对象语言,和C,java在基本数据变量占用字节数上存在较大差异,主要原因来自于python 基本数据变量都是对象,具有更复杂的结构体,而且python2,python3,操作系统位数不同还有差异,可以利用 sys.getsizeof(x)函数查看占用的字节数,下面是python3.5,windows 64位 内存占用情况,可以看出变量的结构体占用和值的占用:

    import sys
    
    a1 = 0
    a2 = 1
    a3 = 100
    a4 = [100,0]
    a5 = []
    print("a1,0",sys.getsizeof(a1))
    print("a2,1",sys.getsizeof(a2))
    print("a3,100",sys.getsizeof(a3))
    print("a4,[100,0]",sys.getsizeof(a4))
    print("a5,[]",sys.getsizeof(a5))
    
    import numpy as np
    print("--------------------------------numpy")
    b1 = np.array([])
    b2 = np.array([100,0])
    b3 = b2.astype(np.int8)
    b4 = b2.astype(np.int16)
    b5 = b2.astype(np.int32)
    print("b1,[]",sys.getsizeof(b1))
    print("b2,[100,0]",sys.getsizeof(b2))
    print("b3,np.int8",sys.getsizeof(b3))
    print("b4,np.int16",sys.getsizeof(b4))
    print("b5,np.int32",sys.getsizeof(b5))
    
    # a1,0 24
    # a2,1 28
    # a3,100 28
    # a4,[100,0] 80
    # a5,[] 64
    # --------------------------------numpy
    # b1,[] 96
    # b2,[100,0] 104
    # b3,np.int8 98
    # b4,np.int16 100
    # b5,np.int32 104
    
    
    展开全文
  • 本文实例为大家分享了python实现内存监控系统的具体代码,供大家参考,具体内容如下 思路:通过系统命令或操作系统文件获取到内存信息(linux 内存信息存在/proc/meminfo文件中,mac os 通过命令vm_stat命令可以查看)...
  • python如何查看内存占用空间

    千次阅读 2018-06-28 00:19:00
    我们如何查看变量占用了多少内存空间呢 首先我们引用sys模块,在使用getsizeof()方法 import sys L = [x for x in range(10000)] print(sys.getsizeof(L)) // 824464 可见插入10w条数据是相当耗内存的 ...
  • python学习笔记10(Python内存管理) 用这张图激励一下自己,身边也就只有一位全栈数据工程师!!...32. Python内存管理 ...1. 对象的内存使用 ...查看对象的内存存储,可以用内置函数id().比如: ...
  • Python实现内存监控系统: 思路:通过系统命令或操作系统文件获取到内存信息 (linux 内存信息存在/proc/meminfo文件中,mac os 通过命令vm_stat命令可以查看) 并将获取到信息保存到数据库中,通过web将数据实时的...
  • 这门非常独特的课程将不仅教授Python内存管理的工作原理以及如何创建在该世界范围内运行良好的代码,还将提供许多具体的技术,工具,设计模式等,以使您的程序更有效地利用内存并更快地进行计算。开机。 如果Python...
  • python内存管理

    2019-10-08 03:57:51
    垃圾回收机制是python系统采用的内存优化机制,采用的是引用计数,每隔一段时间python解释器会去查看变量的被引用次数,如果发现引用次数为0,系统就会默认他是垃圾,将他清除,如果不是0,就会认为他是有效的数据,...
  • 本文结合数据内存形态讲解python中的数据,内容包括: 引用与对象 可变数据类型与不可变数据类型 引用传递与值传递 深拷贝与浅拷贝 (id函数:你可以通过python的内置函数 id() 来查看对象...
  • 如果程序处理的数据比较多、比较复杂,那么在程序运行的时候,会占用大量的内存,当内存占用到达一定的数值,程序就有可能被操作系统终止,特别是在限制程序所使用的内存大小的场景,更容易发生问题。下面我就给出几...
  • 基于python内存监控系统

    千次阅读 2016-09-06 15:08:22
    思路:通过系统命令或操作系统文件获取到内存信息(linux 内存信息存在/proc/meminfo文件中,mac os 通过命令vm_stat命令可以查看) 并将获取到信息保存到数据库中,通过web将数据实时的展示出来.(获取数据—展示数据) ...
  • python就是实现性能自动化测试脚本的脚本语言甚至数据分析、可以方便的实现我们的需求 环境依赖: Mac OS、 PyCharm、adb命令1.0.41版本、小米5手机 2-准备 用数据线连接电脑和手机, 并打开手机的开发者usb调试,当...
  • python之小数据

    2019-10-03 12:05:17
    数据池就是: Python中一种提高效率的方式,固定数据类型使用同一个内存地址 小数据池 支持: str,int,bool 2. 小数据池的用途 id 查看空间的内存地址 获取开辟空间的一种地址 数字范围: -5~256 (识记点) 2.1 is ...
  • python中的数据类型

    2019-08-29 14:14:01
    python中的数据类型 1.整型 查看变量的类型type() 2.浮点型 3.字符串型 当用单引号时,如果字符串中也有单引号,需要用\来转译 当用双引号引用的时候,就不需要用\来转译 4.bool型只有两个值:True,False,非0...
  • 写在前面:一直以来通过查看...通过查看网上各种资料总结了一波java和python的变量内存管理机制,才疏学浅,如有错误之处请各位大牛批评指正。 Java:变量有类型之分,分为基本数据类型和引用类型。声明变量时需...
  • python 变量的数据类型

    2018-07-19 17:07:15
    四、数据类型: ...在Python中我们不需要声明一个变量的数据类型,只需要定义它 并 为它赋值,因为系统会根据我们给它的值自动分辨它的数据类型。 数据的信息查看内存标识:id() 类型检测:type()...
  • Python之小数据

    2019-04-28 20:05:24
    ''' 代码块:作为一个单元执行的...id(var):可查看变量在内存空间中的详细地址 is和==的区别: is判断左右两端的内容的内存地址是否一致,也是在内存中,是否是同一个对象 ==判断左右两端的值是否相等,是否一致,值相...
  • Python3基本数据类型

    2018-04-01 11:14:00
    Python中所说的“类型"指变量所指的内存中的对象类型。 2、给多个变量赋值: 3、查看变量的类类: 4、Python3 中只有一种正型 int,表示长整型(64位),没有Python2 中的 Long 5、Python2中没有布尔类型,用...
  • Python数据类型

    2018-03-05 11:56:18
    Python中常用的数据类型:数据的组成:数据是由三部分组成的,分别是身份(即内存地址,可以使用id函数查看)、类型(可以使用type函数进行查看)、数值Python中常用的数据类型有以下几种1.number 数字类型2....
  • Python基本数据类型

    2021-02-01 03:09:02
    Python基本数据类型 文章目录Python基本数据类型变量数字类型进制转换内置模块字符串字符串的表示字符串的常用操作索引拼接字符串方法置逆字符串与数字之间的转换字符值输入输出输出格式化输出输入代码规范 变量 ...
  • Python中常用的数据类型:数据的组成:数据是由三部分组成的,分别是身份(即内存地址,可以使用id函数查看)、类型(可以使用type函数进行查看)、数值Python中常用的数据类型有以下几种1.number 数字类型2....
  • 详解Python变量在内存中的存储

    千次阅读 多人点赞 2018-08-29 00:23:48
    这篇文章主要是对python中的数据进行认识,对于很多初学者来讲,其实数据的认识是最...(id函数:你可以通过python的内置函数 id() 来查看对象的身份(identity),这个所谓的身份其实就是 对象 的内存地址) 一、引...
  • 文章目录一、python中的数据类型不同数据类型之间的转换在内存中删除变量二、python中的变量1、变量的定义2、变量的命名3、变量的类型4、变量和地址的关系5、Python的id()函数可以查看返回对象的内存地址6、python中...
  • 2 python基础-数据类型

    2018-06-05 17:28:11
    1 数据类型: 变量:用来存储数据的标识符 id(变量活数据类型):查看变量的内存地址 type(变量或者数据类型):输出数据类型 可变变量:修改值后,id不变 不可变变量:修改值后,id改变1.1 数字类型(不可变)...
  • python基本数据类型

    2018-10-05 00:18:00
    可变和不可变数据类型:修改变量的值后,变量在内存中存放的位置是否发生变化,可通过id(变量名)查看变量指向内存中的位置 1.按可变不可变分类 可变:列表、字典 不可变:数字、字符串、元组、布尔 2.按访问顺序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 625
精华内容 250
关键字:

python查看内存数据

python 订阅