Распределяется ли память каждый раз, когда я вызываю PhotoImage - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть программа Tkinter GUI, которая отображает изображения (около 100 изображений) на основе масштабного коэффициента, который дает пользователь.Таким образом, я использую PIL для изменения размера изображений, сохраняя их одно за другим в массиве как

My_Images = []
for i in range(100)
    img = Image.open("Pic"+ str(i) + ".gif")
    Zimg = img.resize((Z.Width,Z.Height))
    Zimage = ImageTk.PhotoImage(Zimg)
    My_Images.append(Zimage)

Z.Width и Z.Height, рассчитывается функцией на основе пользовательского ввода масштабного коэффициента.Таким образом, холст, который использует окно графического интерфейса пользователя, сконфигурирован для отображения изображения один за другим (на которое ссылается массив) на основе входных данных пользовательской навигации.

Что меня беспокоит, так это когда я печатаю содержимое массива после несколькихоснованные на пользователя записи (с коэффициентом масштабирования), таким образом, делая несколько итераций для вышеупомянутого «для цикла», команда печати для содержимого массива My_Images дает «pyimage900», и аналогичные такие большие числа.Я хочу знать, оказывает ли это какое-либо негативное влияние на распределение памяти, так как после девятой итерации «for loop», «pyimage1» - «pyimage800» для меня бесполезен.Несмотря на то, что массив очищается каждый раз перед началом цикла «for», записи продолжают увеличиваться в числовом суффиксе «pyimage».

Имеет ли это распределение памяти неиспользуемых объектов pyimage какое-либо негативное влияние наобъем памяти?Могу ли я удалить их, как?

1 Ответ

0 голосов
/ 09 декабря 2018

Если вы хотите удалить переменную типа Zimage, вы можете использовать строку:

del Zimage

Если вы хотите удалить элемент из массива My_Images:

del My_Images[3]
...