【发布时间】: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 对象,而不是它的内容。您还必须获取键的大小和值。