7

PIL (Python Imaging Library) で画像を編集しています。各ステップ (変換、回転、サイズ変更など) で、さらに多くの画像が作成されます。(ドキュメントからの抜粋:「指定された度数回転した画像のコピーを返します...」)だから、メモリを解放したいのです。

次のアプローチがメモリを節約するかどうか知っていますか?

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 オブジェクトが作成されます。

参照カウントをゼロに減らし、ガベージ コレクターに送られますimageimage

ただし、Python の動作とは関係ありませんが、本物のバグが原因でメモリ リークが発生する PIL の問題を見てきました。たとえば、Draw text を使用する際の問題についての説明は次のとおりです。

PIL 描画テキストのメモリ リーク

私はそれが本当に古い議論であることを知っていますが、PIL を使用していると、時々それが出てくるのを見ます!

于 2012-07-03T19:36:51.817 に答える