【发布时间】:2020-10-29 11:19:52
【问题描述】:
我想在 Python 中使用紧凑且快速的大型位域,理想情况下,除了 numpy 之外没有或几乎没有依赖项。我想要的操作大致相当于:
bits = new_bitfield(3000000) # 3 million bits
bits.set_bit(n, 1)
bits.set_bit(n, 0)
bits.get_bit(n)
我希望位的底层存储非常紧凑/开销低。 (理想情况下,bits 对象将只占用 366.21 Kibibytes 的头发宽度。)
我希望获取和设置非常快,并且类型检查/类型强制开销最小 - 在使用 Cython 或 Numba 特定代码(或它们各自的内联选项)时甚至可能特别快。
在尽可能保持 Pythonic 外观的同时,实现 C 速度/紧凑性的最佳方式是什么?
【问题讨论】:
-
“在尽可能保持 Pythonic 外观的同时,实现 C 速度/紧凑性的最佳方法是什么?”写一个 C 扩展
-
这取决于你想用它们做什么。例如,在 Numba 中实现它应该很容易(只需更改 stackoverflow.com/a/30590727/4045774 的语法)。但这只有在您从一个也已编译的函数中调用它时才真正有意义。
标签: python numpy numba bit-fields