很明显,Python中没有无限的内存。我正在编写一个创建字典列表的脚本。但是每个列表都有250K到6M的对象(有6个列表)。
有没有办法实际计算(可能基于机器的RAM)运行脚本所需的最大内存和内存?
在运行其中一个用1.25-1.5百万字典填充列表的脚本时,当它达到1.227时...它只是停止,但不返回任何错误,更不用说MemoryError
了。所以我甚至不确定这是否是内存限制。我有打印语句,所以我可以看到正在发生的事情,它似乎永远缓冲,因为没有什么是打印和直到特定部分,代码每秒运行几千行。 关于什么使它停止的任何想法?这是记忆还是别的什么?
答案 0 :(得分:2)
如果您需要存储那么多对象,则需要将它们存储在磁盘上,而不是存储在内存中。 考虑使用数据库。
如果您导入sys
模块,则可以访问sys.getsizeof()
功能。您将不得不查看列表中的每个对象,并为每个字典计算每个键的值。有关详情,请参阅上一个问题 - In-memory size of a Python structure。