python PyDictObject对象学习小结

来自: <<python源码剖析>>

Hash方案

散列表+开放定址法

创建PyDictObject

先从对象缓冲池中取, 若没有, 则创建, 同时创建存储数据的表small_table[8]

数据对象PyDictEntry

有三种状态, unused, active, dummy. 

dummy的作用: 删除数据时, 并不真的删除(伪删除), 标记为dummy状态. 目的: hash查找时, 保持连续.

查找策略

提供lookdict和lookdict_string两种查找方法. 最终返回的都是PyDictObject.

lookdict_string: 当查询的key为string时, 触发此方法, 与hash中实体存储的key类型无关.

lookdict_string意义: python本身大量使用PyDictObject.

缓冲池

PyDictObject对象销毁时, 将其加入缓冲池.

若缓冲池已满, 则销毁此对象.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值