1
ballshapesdsd OP 有没有老哥知道 python 的 dict 是怎么实现的,redis 是怎么实现的。。为什么 python 这么快
|
2
0ZXYDDu796nVCFxq 2018-01-11 17:43:54 +08:00
pickle 可以把 python 对象存储到文件
字典太占内存,看能否使用__slots__ Python 3.6 的 compact dict 也可以优化内存占用 |
3
am241 2018-01-11 17:46:28 +08:00 via Android
h5py?
|
4
ballshapesdsd OP |
5
0ZXYDDu796nVCFxq 2018-01-11 18:02:15 +08:00
丢数据库里更好啊,需要什么就取什么
查询、计算等一些功能都可以用数据库搞定 超过一定量的数据,宁愿用 sqlite 也不直接读文件 |
6
ballshapesdsd OP @gstqc 我们用的 postgresql,没有 set 类型,用一个表来做 set 的话,非常慢,因为这个 set 要不断的插,不断的取。
|
7
QAPTEAWH 2018-01-11 18:06:40 +08:00
才 10g,当然是买内存了。
|
8
justfly 2018-01-11 18:11:14 +08:00
Python 的 dict 本质上就是进程内存空间的一个 hash table,访问就是直接访问进程内存,没有任何 IO 操作和系统调用,当然快。
理论上没有任何方法比这个更快,你这种情况可以搞磁盘 KV 数据库(比如 leveldb 之类的)加上内存的 LRU cache。 |
9
woscaizi 2018-01-11 18:12:47 +08:00 via iPhone
加内存
|
10
msg7086 2018-01-11 18:40:02 +08:00
「速度也超级快」就是因为在内存里啊。放到硬盘上了还快个毛线……
如果打死都不想加内存的话,那就拼命开 swap 呗,正好可以体验一下比内存慢几万倍甚至可能几百万倍的存储器带来的影响。 |
11
Kilerd 2018-01-11 19:47:54 +08:00
你知道吗? Python 跟 Lua 很想, 很多东西都是基于 dict 的, 所以 Python3 的一大部分工作就是加快 dict 的操作
|