2014-01-13 61 views
-1

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

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

实际的问题,我碰到:

在运行填充有1.25-1.5亿词典列表,当它击中1.227的脚本之一......它只是停止,但没有返回错误独处MemoryError。所以我甚至不确定这是否是内存限制。我有打印语句,所以我可以观察正在发生的事情,并且它似乎永远缓冲,因为没有任何内容正在打印,直到该特定部分,代码每秒运行几千行。 关于什么让它停止的任何想法?这是记忆还是别的吗?

+1

您必须查看每个列表中存储的对象以及需要占用多少空间。 'sys.getsizeof'应该让你开始 – inspectorG4dget

+0

这个特定列表中的每个对象从'sys.getsizeof(object)'返回'72' –

+0

@ inspectorG4dget我怎样才能使用这些信息来确定这是停止的原因。如果这有什么区别,我有4GB的内存。 –

回答

2

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

如果您导入sys模块,您将有权访问功能sys.getsizeof()。您必须查看列表中的每个对象,并为每个字典计算每个键的值。有关此更多信息,请参阅此前一个问题 - In-memory size of a Python structure