python del函数_干货:Python的内存管理办法
了解内存管理可以帮助您编写高效的Python代码。可能无法控制内存分配,但是您可以优化程序来更好地分配内存。
在python中,整个对象存储在内存中,对象可以是整数、字符串或列表,以及指向对象的变量。 让我们了解python对象的作用!每当创建一个变量时(比如a = 200),就会在内存中创建一个新的PyObject,它的ref count被设置为1,变量“a”指向它。
但是什么是ref count呢? 举个例子,我们有一个类型为integer、值为200的变量“a”。假设我需要另一个名为“b”的变量,其类型为integer,值为200。创建了两个这样的变量 a = 200 b = 200 现在,您可能在猜测,对于变量“a”和“b”,内存中必须有2个对象。但事实并非如此。“a”和“b”指向同一个对象。 变量a和b引用相同的PyObject。
让我们通过Python代码来验证这一点。 如您所见,变量“ a”和“ b”具有相同的id(内存位置),因此表示相同的对象,而c具有不同的id值。
因此,当前在内存中有两个python对象。 现在,如果我们为“ a”分配一个新值,即a = 3。 现在, “ a”指向一个新对象,而 “ b”仍然指向同一对象。 但是让我们考虑这个例子。 在此示例中,a = 1,但“ b”的值为“ a”。当我们更改“ a”的值时,是否也会影响“ b”?让我们来看看。 “ a”现在指向新对象,但 “ b”仍然指向旧对象。 但这是为什么呢? 因为“b”并不直接指向变量“a”,而是指向变量“a”的对象。这就是ref count的作用,它跟踪指向它的变量的数量。
当PyObject的引用ref count变为零,将会发生什么呢? 一旦对象的ref count变为0,垃圾收集器就会将其从内存中删除。
那么如何删除对对象的引用:
- del Python的内置del关键字可帮助我们删除这些指向对象的引用。实际上,有些人认为del从内存中删除了对象,事实并非如此。但可以像这样使用del删除引用。
- 超出范围 一旦超出范围,对象的引用将自动删除。 让我们以上面的代码为例,变量“ x”的对象在scope()函数中ref count为+1,但是当解释器离开此函数作用域时,PyObject的ref count将减1,因为“ x”是一个局部变量,只对它的函数有作用域。
- 3.将新对象分配给变量。 将新对象分配给现有变量时。前一个对象的ref count减1。
python del函数_干货:Python的内存管理办法相关推荐
- python isalnum函数_探究Python中isalnum()方法的使用
探究Python中isalnum()方法的使用 isalnum()方法检查判断字符串是否包含字母数字字符. 语法 以下是isalnum()方法的语法: str.isa1num() 参数 NA 返回值 ...
- python pos函数_使用python+sklearn实现特征提取
sklearn.feature_extraction模块可用于以机器学习算法支持的格式从原始数据集(如文本和图像)中提取特征.**注意:**特征提取与特征选择有很大不同:前者是将任意数据(例如文本或图 ...
- python deepcopy函数_用Python解数独[6]:递归获得最终答案
目录 用Python解数独[0] 用Python解数独[1]:求每个单元格的行值域 用Python解数独[2]:求列值域和九宫格值域 用Python解数独[3]:求总值域 用Python解数独[4]: ...
- python 微积分 函数_用Python学微积分(2)---复合函数
函数的复合(Composition) 定义:设函数y=f(u)和u=g(x)u=g(x),则函数y=f[g(x)]称为由y=f(u)和u=g(x)复合而成的复合函数,其中函数y=f(u)常常称为外函数 ...
- Python写入字典_干货|python基础知识总结
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 Python是一种面向对象的解释型计算机程序设计语言.它有着代码简洁.可读性强的特点. ...
- python diff函数_使用Python创建你自己的diff工具
为什么我需要自己的diff工具? 我经常使用git跟踪我的编码项目.文章.业务工作等等.git的一个美妙之处在于,你可以通过简单地使用其内置的diff功能来轻松地比较你的工作的不同状态.要使用这个功能 ...
- python unique函数_《Python编程从入门到实践》json数据可视化练习详解
<Python编程从入门到实践>16.2中,计算收盘价均值的程序有些不易看懂,结合我自己的理解进行一些说明. 使用的数据集:join格式的数据, 数据集是由多个字典为元素组成的列表.每个字 ...
- python readlines函数_关于python的readlines
此处记录一下python的 read readline readlines 由于readlines()产生了一个可怕的bug,索性影响不大,此处记录一下: 建议python读取文件,存在文件过大,不能 ...
- python scapy 函数_【python|scapy】sprintf输出时raw_string转string
最近在有python的scapy模块分析TCP报文,一直有一个关于转义字符的问题困惑着我,查找的很多资料后仍然百思不得其解,请大神指教. 请看代码: from scapy.all import * d ...
最新文章
- php statements,PHP PDOStatement::setAttribute讲解
- ggplot2版聚类物种丰度堆叠图
- Java Web架构知识整理——记一次阿里面试经历
- 大学计算机课英语心得体会,关于计算机网络辅助大学英语教学的思考学习心得...
- 【Android应用开发】Android Studio 错误集锦 -- 将所有的 AS 错误集合到本文
- anguarjs 上传图片预览_MIUI12 20.10.29更新,新版「模糊预览图」
- 【Tools】CSDN-markdown编辑器使用说明
- 完全相同的4个小矩形如图所示放置_吸睛!矩形在PPT中的创意表现
- 百度女程序员半夜打的回家,被的哥嘲讽:加班到一点收入还不如我,图啥?
- Laravel 中asset 函数支持https 协议
- CKEditor配合CKFinder的使用
- Java Web学习总结(37)——Filter和Listener详解
- android groovy方法,Android Gradle从入门到精通(三)Groovy快速入门指南
- 进阶03 System、StringBuilder类
- Windows 下安装 nvm 管理 nodejs 版本
- arcgis 合并名字相同的要素_【转】ArcGIS中各种合并要素(Union、Merge、Append、Dissolve)的异同点分析...
- happen-before与volatile、final
- 初中三年级数学可以用计算机吗,不到3分钟,这份初中数学攻略被家长和学生疯狂转发!太实用了!...
- MySQL医疗信息管理系统数据库(源码)
- 短视频平台开发,首先要搭建短视频框架