python垃圾回收环境变量配置_Python的垃圾回收机制

在Python中,一切对象都是引用计数的。当分配一个新的名字给一个对象,或将其放到一个列表、远足或字典中时,这个对象的引用计数就会增加1。如:

a = 2 #在内存中创建一个对象‘2’,并把名字a指向该对象,该对象的引用计数为1

b = a #引用计数加1,为2

del a #删除a的引用,此时引用计数为1

当‘2’的引用计数为0的时候,他会在适当的时机被Python的垃圾回收机制回收。

但在特定的情况(循环引用)下,会阻止垃圾回收机制销毁不再使用的对象,如:

a={} #引用为1

b={} #引用为1

a['b']=b #b的引用加1,为2

b['a']=a #a的引用加1,位2

del a #删除a,a的引用为1

del b #删除b,b的引用为1

在这个例子中,del语句减少了a和b的引用计数并删除了用于引用的变量名,可是由于两个对象各包含一个对方的引用,虽然最后两个对象都无法通过名字访问,但引用计数并没有减为0。因此不会被销毁,会一直保留在内存中,造成内存泄漏。

为解决这个问题,python解释器会定期运行一个搜索器,若发现一个对象已经无法被访问,无论该对象引用计数是否为0,都销毁他。

Python 的详细介绍:请点这里

Python 的下载地址:请点这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值