【问题标题】:How to save RAM when dealing with very large python dict?处理非常大的python dict时如何节省RAM?
【发布时间】:2019-09-08 01:38:52
【问题描述】:

我有十亿级的键值对,需要为它们创建一个查找表。我目前使用本机 python dict,但是,将这些对添加到 dict 中似乎非常慢,并且消耗大量 RAM(数百 GB)。我需要的选项是 1)将每一对添加到 dict 和 2)查找几百万次。我有什么推荐的方法来满足要求吗?我有一台具有几百 GB 内存(但不足以将所有内容存储在内存中)和大量 CPU 内核的机器。

【问题讨论】:

  • “慢”到底是什么意思?你是怎么测量的? “大量” RAM 究竟有多少?
  • 考虑 RAM 的大小与磁盘的大小。这就是数据库写入磁盘块并在查询时使用 BTree 访问所需内容的原因。你需要一个数据库
  • 如果您需要任何有用的建议,您将不得不提供有关您的用例的更多详细信息。
  • 至少告诉我们那个dict的使用模式是什么:你在查找什么数据?多久等等...
  • 需要使用数据库是正确的,但即便如此,那里的数据量也必须分块查找,而不是一次查找全部。

标签: python database dictionary


【解决方案1】:

如果这些数据不在机器之间共享(如果它在内存中,dict 我不认为是这样),那么我建议使用本地 SQLite 数据库。

Python 有一个internal library 用于与 SQLite 交互,它速度很快(用 C 语言编写),将数据存储到磁盘(以节省 RAM)并且几乎在任何地方都可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-02
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    相关资源
    最近更新 更多