【问题标题】:Python memory limit [duplicate]Python内存限制[重复]
【发布时间】:2014-02-01 20:33:16
【问题描述】:

很明显,Python 中不可能有无限的内存。我正在编写一个创建字典列表的脚本。但是每个列表有 250K 到 6M 个对象(有 6 个列表)。

有没有办法实际计算(可能基于机器的 RAM)最大内存和运行脚本所需的内存?

我遇到的实际问题:

在运行一个用 1.25-150 万个字典填充列表的脚本时,当它达到 1.227 时...它只是停止,但不返回任何错误,更不用说 MemoryError。所以我什至不确定这是否是内存限制。我有打印语句,所以我可以看到发生了什么,它似乎永远缓冲,因为没有任何东西在打印,直到那个特定的部分,代码每秒运行几千行。 关于是什么让它停止的任何想法?这是记忆还是别的什么?

【问题讨论】:

  • 您必须查看在每个列表中存储了哪些对象,以及它占用了多少空间。 sys.getsizeof 应该让你开始
  • 这个特定列表中的每个对象都从sys.getsizeof(object)返回72
  • @inspectorG4dget 如何使用此信息来确定停止的原因。如果这有什么不同的话,我有 4GB 的 RAM。
  • @RyanSaxe:您使用的是什么操作系统?进程还有多少内存可用?
  • @RyanSaxe:72 个字节只是 dict 对象,而不是它的内容。您还必须获取键的大小和值。

标签: python memory


【解决方案1】:

如果您需要存储这么多对象,则需要将它们存储在磁盘上,而不是内存中。 考虑使用数据库

如果您导入sys 模块,您将可以访问函数sys.getsizeof()。您将不得不查看列表的每个对象,并为每个字典计算每个键的值。有关这方面的更多信息,请参阅上一个问题 - In-memory size of a Python structure

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2019-11-07
    • 2011-09-22
    相关资源
    最近更新 更多