1

我正在使用 Python,但最近我遇到了很多内存错误。

一个与以 .png 格式保存绘图有关。一旦我尝试将它们保存为 .pdf 格式,我就不再有这个问题了。如何仍将 .png 用于多个文件?

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

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

谢谢你的帮助!

4

2 回答 2

1

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

你也可以尝试做

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

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

于 2012-11-13T13:22:53.807 回答
0

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

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

请参阅此处以获得很好的解释。

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

于 2012-11-13T14:04:49.150 回答