内存有效的包含检查方法

2024-04-25 20:51:30 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个我可以使用dict来完成的任务,如果不是因为我需要存储比4gbs内存更多的数据的话。我还在同一个程序中做其他需要内存的事情,所以内存要求越低越好。你知道吗

我只是想

  1. 存储大量字符串

  2. 检查集合中是否包含字符串

有Python的方法吗?我用的是3.3所以berkelydbs不在了。你知道吗

它还需要给出准确的答案,所以没有布鲁姆过滤器。你知道吗


Tags: 数据方法内存字符串答案程序过滤器事情
3条回答

使用sqlite3它完全符合你的需要

如果您确实需要快速查找,您可以使用marisa tree,请参见http://kmike.ru/python-data-structures/,但首先您必须确认它是应用程序中的瓶颈。特别是cache可以在磁盘数据库中做很多事情。不要过早优化。轮廓。你知道吗

如果你只需要存储它,为什么要把它保存在内存中,使用某种数据库。你知道吗

如果数据无法放入内存,那么您就别无选择,必须将部分数据临时存储在外部存储器(磁盘)中。正如您正确猜到的,文件访问既昂贵又缓慢,所以要将磁盘操作保持在最低限度。你知道吗

由于您似乎需要一个键值存储(就像您有一个dict一样),所以最好将其拆分,以便相关数据位于相似的位置,然后您可以快速地按块读取到内存中进行计算。你知道吗

但如何做到这一点完全取决于你实际上在做什么,没有进一步的信息,我们无法真正帮助你。你知道吗

顺便说一句,正如您提到的Berkeley DB,Python3.2实际上有bindings,如果他们也在Python3.3上工作,我也不会感到惊讶。否则3.3还是相当新的,所以可能会有更新。如果您正在寻找一个替代的键值存储数据库,那么可以试试redis。不过,我还没试过Python bindings。你知道吗

相关问题 更多 >