python 中内存对数据的应用


python 对内存的使用


浅拷贝

解释:引用的拷贝(只拷贝父对象);


深拷贝

解释:对对象资源的拷贝;

导入模块:

>>> import copy
>>> a = [1,2,3,[‘a‘,‘b‘,‘d‘]]
>>> b = a
>>> a
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘]]
>>> b
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘]]
>>> id(a)
139712705065616
>>> id(b)
139712705065616
#定义二元列表,标签引用,且查看内存地址一致,但不能作为依据

调用copy.copy模块,进行拷贝    浅拷贝

>>> c=copy.copy(a)

观察c的地址空间,通过copy是独立的

>>> c
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘]]
>>> a
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘]]
>>> id(c)
139712705068784  #注意
>>> id(a)
139712705065616  #注意

向序列增加值:

>>> a.append(‘d‘)
>>> a
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘], ‘d‘]
>>> b
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘], ‘d‘]  #b指向的是同一地址空间
>>> c
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘]]       #c未改变

浅拷贝只拷贝父对象:

>>> id(a[3])
139712704967456
>>> id(c[3])
139712704967456
>>> id(a[4])
139712705357456

#注意上述可变类型的子对象地址空间未改变,

调用copy.deepcopy模块,进行拷贝    深拷贝

>>> d = copy.deepcopy(a)

查看地址空间

>>> id(a)
139712705065616
>>> id(d)
139712705065688
>>> id(a[3])
139712704967456
>>> id(d[3])
139712705068640 #此处是不一致的

向序列增加值:

>>> a.append(‘e‘)
>>> a
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘, ‘d‘], ‘d‘, ‘e‘]
>>> d
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘, ‘d‘], ‘d‘]
>>> a[3].append(‘x‘)
>>> a
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘, ‘d‘, ‘x‘], ‘d‘, ‘e‘]
>>> d
[1, 2, 3, [‘a‘, ‘b‘, ‘d‘, ‘d‘], ‘d‘]

对对象资源的拷贝:

>>> id(a[3])
139712704967456
>>> id(d[3])
139712705068640  
#注意上述可变类型的子对象地址空间发生改变
时间: 2024-11-02 02:35:23

python 中内存对数据的应用的相关文章

python中如何把数据存储到本地

有很多时候,我们会在python的运行过程中得到一些重要的变量,比如一个数据量很庞大的dict.而且,后面的某些程序也会用到这个dict,那么我们就最好把它存储到本地来,然后下次调用的时候,先读取本地的文件,导入到字典类型中,调用即可.这样就免去了重新学习这个字典的过程.那么在python中如何把数据存储到本地呢?我们用到的是python中的pickle模块.  如下:import pickleda... http://wd.tgnet.com/QuestionDetail/2015041044

在Python中实现交互式数据可视化

最近,我一直在看美国德克萨斯州奥斯汀举办的SciPy 2015会议上的一段视频——“用Blaze和Bokeh创建Python数据应用程序”,并且情不自禁地反复思考这两个库赋予世界各地使用Python的数据科学家们的强大能力.在本文中,我将带你体验使用Bokeh实现数据可视化的各种可能途径,以及Bokeh为什么是每位数据科学家的必备“神器”. ◆ ◆ ◆ 什么是Bokeh? Bokeh是一个专门针对Web浏览器的呈现功能的交互式可视化Python库.这是Bokeh与其它可视化库最核心的区别.正如下

python 中内存映射二进制文件

内存映射一个文件并不会导致整个文件被读取到内存中. 也就是说,文件并没有被复制到内存缓存或数组中.相反,操作系统仅仅为文件内容保留了一段虚拟内存. 当你访问文件的不同区域时,这些区域的内容才根据需要被读取并映射到内存区域中. 而那些从没被访问到的部分还是留在磁盘上. 使用mmap()函数可以创建内存映射文件.第一个参数是一个文件描述符,可以来自一个文件对象的fileno()方法或从os.open().调用者要在调用mmap()前打开文件,并调用结束后关闭它.第二个参数以字节为单位,是映射文件的大

Python中几种数据的常用内置方法

1. int bit_lenth:二进制的长度 2.str capitalize():首字母大写,其他小写. upper():全部转换为大写,lower()相反;casefold()功能类似于lower,但是更强大,不常用 title():每个被特殊字符隔开的单词的首字母大写,其中中文属于特殊字符; strip():去除左边和有右边的空格,对中间的空格无能为力,也可以去掉两边的指定的字符串 replace(a, b):将a替换为b split(a):用a作为切割线进行切割,返回值为一个list

Python中Counter统计数据输出具体办法

from collections import Counter # 列表 l_one = [1709020621, 1709020621, 1770603107, 1770603105, 1770603106, 1770603105, 1709020621] # 把列表换成字典统计 c = Counter(l_one) print(c) k = c.most_common(len(c)) # 找出全部元素从大到小的元素频率以及对应的次数. # 转化成列表形式,列表每一项又是元祖. print(k

Python中常用的数据类型转换

int 使用int()转换22.2,得到结果为 22 float 尽可能将字符串或者数字 转化为浮点数类型. chr(x) 将数字类型转换为字符串类型 ord(x) 将字符串类型转换为数字类型

Python中MySQL插入数据

1 sql = 'INSERT INTO course(class_name, credit, properties, teacher_name, college_given, classroom) ' 2 'VALUES ("%s", "%d", "%s", "%s", "%s", "%s")' % 3 (class_name, credit, properties, teacher_

Python中的内存管理机制

Python是如何进行内存管理的 python引用了一个内存池(memory pool)机制,即pymalloc机制,用于管理对小块内存的申请和释放 1.介绍 python和其他高级语言一样,会进行自动的内存管理.它使用引用计数机制检测为对象分配的内存是否可以被释放.然后,在Python中内存永远不会返还给操作系统,Python会持有这些内存并在需要时重新使用它们.在很多场景下,这个特性可以减少内存申请和释放所带来的性能损耗:但对于需要长时间运行的Python进程来讲,Python将会占用大量的

《python解释器源码剖析》第17章--python的内存管理与垃圾回收

17.0 序 内存管理,对于python这样的动态语言是至关重要的一部分,它在很大程度上决定了python的执行效率,因为在python的运行中会创建和销毁大量的对象,这些都设计内存的管理.同理python还提供了了内存的垃圾回收(GC,garbage collection),将开发者从繁琐的手动维护内存的工作中解放出来.这一章我们就来分析python的GC是如何实现的. 17.1 内存管理架构 在python中内存管理机制是分层次的,我们可以看成有四层,0 1 2 3.在最底层,也就是第0层是