7

我正在使用 PIL(Python 图像库)编辑图像。在每一步(转换、旋转、调整大小......)都会创建更多图像。(文档摘录:“返回旋转给定度数的图像副本......”)所以我想释放内存。

你知道下面的方法是否节省内存吗?

import PIL.Image

image = PIL.Image.open('Image.jpg')
garbage = image
image = image.convert('RGB')
del garbage
4

1 回答 1

5

您不需要进行临时garbage参考。

当这条语句的右边被执行时:

image = image.convert('RGB')

创建了一个新的 Python 对象。

通过将其分配回用于表示image的旧对象,image其引用计数减少到零,并被发送到垃圾收集器。

但是,与 Python 的工作方式无关,我看到了 PIL 问题,因为真正的错误导致内存泄漏已经形成。例如,这里讨论了使用 Draw 文本时的问题:

PIL 绘制文本内存泄漏

我知道这是一个非常古老的讨论,但是当我使用 PIL 时,我仍然会看到它有时会出现!

于 2012-07-03T19:36:51.817 回答