Python中构建高效稀疏IP页表数据结构的技术选型咨询
Python中构建高效稀疏IP页表数据结构的技术选型咨询
我最近在尝试用Python构建一个稀疏数据结构,用来实现类似现代计算机架构里的页表功能——也就是在数据填充前保持稀疏状态。核心需求是高效地管理数组的数组,用来记录操作过程中遇到的IP地址。
目前我写的赋值逻辑大概是这样的:
def __setitem__(self, key, value): p = IpTable._parts(key) map = self._map for idx in p[0:3]: if type(np.ndarray) != type(map[idx]): map[idx] = np.zeros(256) map = map[idx] map[p[3]] = value
这里的_parts()方法会把类似192.168.0.1这样的IP转换成[192, 168, 0, 1]的列表。
一开始我考虑用NumPy甚至SciPy的稀疏数组,但试下来感觉这些工具主要是针对矩阵运算场景的——比如它们不太支持把元素值设置为后续的数组,而我刚好需要这个功能。
举个例子,我的数据结构里的一个条目逻辑上是这样的:
A[192] = B B[168] = C C[0] = D D[1] = value
现在我有点困惑:是我没搞懂NumPy/SciPy的正确用法,还是它们本来就不适合做这件事?我本来希望这个结构能有不错的性能,不然的话我其实可以直接用字典来实现,比如:
A['192.168.0.1'] = value
不过想想字典内部用的是哈希表,说不定性能也不会太差?
备注:内容来源于stack exchange,提问作者sherrellbc
相关产品推荐
相关产品推荐

