请问大家, 有没有办法把 Python 的 dict, 存储到一段连续内存上

2022-07-25 15:08:32 +08:00
 wcsjtu

比如说, 我这里有个

table: Dict[str, List[str]] = {
	"key1": ["value1", "value2", ...],
    ...,
    "keyn": ["valuem", ...]
}

我想把这个 dict 中的所有对象(包括所有的 key, value, 以及 list), 全部存储到一段连续内存里, 同时还能支持查表操作, 比如说

values: List[str] = table_in_contigious_memory["key1"]

有没有现成的轮子可以做这种事啊。

PS: 可以不是 Python 原生的 Dict, 只要是 dict-like, 支持查表就行.....

6458 次点击
所在节点    Python
85 条回复
ipwx
2022-07-26 12:01:00 +08:00
@wcsjtu 麻烦点当然能做,boost::ipc 还有 offset_ptr 呢。

我说的是不想自己撸找轮子,不太可能实现。因为要实现通用的这种需求的框架太 tm 困难且没有必要了。
changz
2022-07-26 12:25:38 +08:00
换树结构试试
dayeye2006199
2022-07-26 14:02:22 +08:00
Sqlite in memory database
neoblackcap
2022-07-26 14:49:44 +08:00
@wcsjtu 是序列化,但是它的序列化是特化的,反序列化的成本接近于零。但是我也没有具体试过。
然后如果你的需求还要读写的话,那么这个库就不能满足你的需求了。如果你需求还隐含跨进程访问。我还是建议你使用数据库。
mattx
2022-08-20 22:32:40 +08:00
https://github.com/KeyviDev/keyvi 看起来挺适合群主的需求

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/868557

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX