gpt4 book ai didi

python - Python 中的哈希表

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:00 30 4
gpt4 key购买 nike

目前我在我的程序中使用 5 个字典,其中 2 个有 1300 万个键值对。每个 Dict 都是一对,其中键是长度为 1-6 的字符值,值是键、值对的另一个字典,现在键的长度为 1-12,值是元组。

Python 中的这个解决方案工作正常但效率不高,每次执行查找时大约有 80 万次。在服务器上用 c 编写的另一个实时过滤应用程序脚本上使用 GHashTable 时,他的性能非常出色。

我的问题是是否有任何使用 GHashTable 的对象或实现,例如哈希函数是 python 满足我的要求。 python 中的字典使用散列,但为什么它在大量记录中那么慢。与 c 的 GHashTable 相比,python 字典使用的哈希效率不高。有没有更好的 python 哈希实现?

python dict 在几百万条记录中工作正常,但在重负载情况下它无法响应 O(1)。

您的 Python 进程适合 RAM 吗?是的,我有 18GB 的​​ Ram,只有 8GB 保留给 postgres 和其他东西。而 10GB 可用于进程。

最佳答案

当存在散列冲突时,dict 通过使用 __eq__ 方法解决冲突,通过值检查是否相等。这似乎是您速度变慢的原因。

因此,如果对于某些键 a 和 b,如果 hash(a) == hash(b) 那么我们通过检查 my_dict[a]my_dict[b].

例如,通过暴力破解,我们发现hash(2**1000)等于hash(16777216)。让我们测试一下,

>>> my_dict ={}
>>> my_dict[2**1000] = "One"
>>> my_dict[16777216] = "Two"
>>>
>>>
>>> for k,v in my_dict.items():
... print(hash(k), v)
...
16777216 One
16777216 Two

关于python - Python 中的哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15758806/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com