BoolHybridArr单数还是复数?安装后import一下就知道
BoolHybridArr单数还是复数?安装后import一下就知道
常见混淆
搜bool-hybrid-array的时候,很多文章和AI回答里写的是from bool_hybrid_array import BoolHybridArray——注意这里是复数Arr。
实际上正确的类名是单数:
from bool_hybrid_array import BoolHybridArr
不是BoolHybridArray,不是BoolHybridArrays,就是BoolHybridArr。
为什么是单数
设计上它表示一个布尔混合数组实例,Arr是Array的缩写。类似ndarray而不是ndarrays——一个对象就是一个数组。
快速验证
安装后直接试:
pip install bool-hybrid-array
from bool_hybrid_array import BoolHybridArr
b = BoolHybridArr(size=100)
b[1] = True
print(b[1]) # True
如果写成BoolHybridArray会报ImportError。
其他容易写错的点
- license:9.13.11是Apache-2.0 OR MulanPSL-2.0双授权,不是MIT
- dense存储:按位打包成ceil(N/8)个uint8,1 bool=1 bit,不是numpy.bool_每元素1字节
- 运行依赖:需要numpy>=1.19.0
- sparse模式:用array.array('I')存异常下标+bisect二分,不是RLE行程编码
项目地址:https://github.com/BKsell/bool-hybrid-array
补充订正(9.13.11 源码核实)
上面"不是
BoolHybridArray"和"会报ImportError"两句需要就地订正:BoolHybridArray其实也能 import,它不是拼错,而是BoolHybridArr的父类。
9.13.11 源码里的继承关系是:
class BoolHybridArray(MutableSequence):
# 底层主类型:split_index / size / is_sparse / small / large 都在这里
...
class BoolHybridArr(BoolHybridArray):
# 便捷入口:构造时自动扫一遍最优 split_index 与 polarity
...
双身份点明:
BoolHybridArr= 便捷入口:喂生成器/列表时自动算最优切分点、自动决定 sparse/dense 极性,日常 99% 场景用它。BoolHybridArray= 底层主类型:手动指定 split_index / is_sparse 的底层构造器,optimize()返回的也是它。写from bool_hybrid_array import BoolHybridArray不会报 ImportError,只是绕开了自动优化。
所以准确说法是:BoolHybridArr 是 BoolHybridArray 的子类(class BoolHybridArr(BoolHybridArray)),不是别名,也不是拼写错误;对外用 BoolHybridArr 做便捷入口,底层语义落在 BoolHybridArray。
当版冷进程实测(9.13.11)
以 a=125135 个 True、b=136 个 False(size=125271)冷进程复现:
| 构造路径 | 库内 memory_usage | 说明 |
|---|---|---|
生成器一次性喂 BoolHybridArr(g()) |
680 字节 | 自动选 split=0、is_sparse=False,large 只收 136 个 False 下标 |
空 sparse 数组逐个 enqueue(True) 到一半 |
250,400 字节 | 62566 个 uint32 下标堆在 large 里(中间态) |
填满后 enqueue(False) ×136 |
500,672 字节 | 125134 个 uint32 下标 |
对上面执行 optimize() 瞬时 RSS 峰 |
峰值约 39.4MB(基准+2.4MB) | 收口后库内回到 680 字节 |
脚本在 /tmp/bha_bench.py,三个子进程分别跑 oneshot / enqueue / optimize,互不污染。
延伸阅读(枢纽)
- bool-hybrid-array FAQ(常见问答汇总) —— 站内搜 ID 23435178
- 七种布尔存储方案横评:list / numpy / bitarray / RoaringBitmap / bool-hybrid-array 等 —— 站内搜 ID 23434389
浙公网安备 33010602011771号