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,互不污染。

延伸阅读(枢纽)

posted @ 2026-10-28 19:02  贝壳bkshell  阅读(6)  评论(0)    收藏  举报