На Python при использовании библиотеки подушек PIL. Когда я открываю изображение и вызываю загрузку, нужно ли его закрывPython

Программы на Python
Anonymous
На Python при использовании библиотеки подушек PIL. Когда я открываю изображение и вызываю загрузку, нужно ли его закрыв

Сообщение Anonymous »

РЕДАКТИРОВАТЬ:
Похоже, я путал закрытие файла изображения с .close(), уничтожающим данные изображения. Память не должна быть проблемой, а правильное закрытие файла.
При открытии изображения в Python с использованием библиотеки подушек PIL предположим, что изображение не содержит нескольких кадров с (например, простым «jpeg»), а затем вызовите для него .load():

Код: Выделить всё

from PIL import Image

image = Image.open("some path")
image.load()
Могу ли я просто удалить/переназначить ссылку на него и позволить сборщику мусора позаботиться об этом вместо вызова .close()? Вместо того, чтобы делать .close(), я мог бы просто сделать:

Код: Выделить всё

image = "some other thing"
# or
del image
И память все равно будет освобождаться через сборщик мусора?
В документации указано:

Предлагаемая обработка файлов

Код: Выделить всё

Image.Image.load()
должен закрыть файл изображения, если в нем
несколько кадров.

Код: Выделить всё

Image.Image.seek()
никогда не должен закрывать файл изображения.
Пользователям библиотеки следует использовать контекстный менеджер или вызывать

Код: Выделить всё

Image.Image.close()
на любом изображении, открытом с именем файла или объектом Path
, чтобы гарантировать, что базовый файл закрыт.

РЕДАКТИРОВАТЬ:
В нем говорится, что .load() должен закрывать файл, пока он содержит один кадр.
Поэтому я предполагаю, что это означает, что .close() не нужно вызывать, если не используется контекстный менеджер, изображение состоит только из одного кадра и .load() был вызван.
Но большинство примеров, которые я видел, все равно вызывают .close(). Вот почему я в замешательстве.

Вернуться в «Python»