【问题标题】:How to handle Out of memory with Python如何使用 Python 处理内存不足
【发布时间】:2010-11-19 17:01:33
【问题描述】:

我有大量的字典供我操作。超过 1000 万个单词被散列。它太慢了,有时它会耗尽内存。

有没有更好的方法来处理这些庞大的数据结构?

【问题讨论】:

  • 你为什么不用shelve

标签: python nlp


【解决方案1】:

是的。它被称为数据库。由于字典对您有用(除了内存问题),我认为 sqlite 数据库对您来说可以正常工作。你可以很容易地使用sqlite3,它有很好的文档记录。

当然,如果您可以将值表示为 json 之类的值,或者愿意信任来自本地文件的腌制数据,这将是一个很好的解决方案。也许您应该在字典的值中发布有关您所拥有内容的详细信息。 (我假设键是单词,如果不是请纠正我)

您可能还想查看不生成整个字典而只处理它的块。这在您的特定用例中可能不实用(不幸的是,它通常不是用于字典的那种东西)但是如果您能想到一种方法,重新设计您的算法以允许它可能是值得的。

【讨论】:

  • 在这种情况下,一个完整数据库的可行替代方案可能是内置的shelve 模块。它提供了一个不错的 Python 类字典接口,所以使用它转换 ro 应该相对容易。
  • @martineau,这是可能的。我的想法是搁置可能会比 sqlite 慢得多,但我很可能错了,因为我没有对其进行任何分析。
【解决方案2】:

我不确定你的话是什么意思,但我想它们是相当大的结构,如果记忆是一个问题的话。

我曾经通过从 Python 32 位切换到 Python 64 位解决了 Python MemoryError 问题。事实上,一些 Python 结构对于 4 GB 地址空间来说已经变得太大了。您可能想尝试一下,作为解决问题的简单潜在解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-25
    • 2014-07-20
    • 2021-08-27
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多