各种内存错误,python

时间:2012-11-13 13:13:53

标签: python memory

我正在使用Python,但最近我在内存错误中运行了很多。

一个与以.png格式保存图表有关。一旦我尝试以.pdf格式保存它们,我就不再有这个问题了。我怎样才能将.png用于多个文件?

其次我正在阅读相当大的数据文件,过了一段时间,我的内存不足。我每次尝试关闭它们,但也许还有一些东西被打开了。有没有办法在没有处理程序的情况下关闭Python中所有打开的文件?

最后,Python应该释放所有未使用的变量,但我认为它没有这样做。如果我只运行一个函数我没有问题,但是如果我在行中运行两个不相关的函数(在完成第一个之后,在进入第二个之前,在我的理解中,所有变量都应该被释放),在第二个期间,我再次运行内存错误问题。因此我相信,第一次运行后变量不会被释放。如何强制Python释放所有这些(我不想使用del,因为有很多变量,我不想指定它们中的每一个)。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

查看代码可能会带来更多的许可。

您也可以尝试

import gc
f() #function that eats lots of memory while executing
gc.collect()

这将调用垃圾收集器,您将确保删除所有已放弃的对象。如果这不能解决问题,请查看objgraph库http://mg.pov.lt/objgraph/objgraph.html,以便检测是谁泄漏了内存或找到了您忘记删除对内存消耗对象的引用的位置。

答案 1 :(得分:0)

  

其次我正在阅读相当大的数据文件,过了一段时间,我的内存不足。我每次尝试关闭它们,但也许还有一些东西被打开了。有没有办法在没有处理程序的情况下关闭Python中所有打开的文件?

如果您使用with open(myfile1) as f1: ...,则无需担心关闭文件或意外打开文件。

请参阅here以获得更好的解释。

至于其他问题,我同意alex_jordan的说法,如果你展示了一些代码会有所帮助。