Python t在更新图像时使用内存;如何停止内存使用?

Python t在更新图像时使用内存;如何停止内存使用?,python,tkinter,Python,Tkinter,我有一个图像显示在主页上,我每10秒更新一次。我打开图像,设置标签,然后引用回图像,这样它就不会被垃圾收集并消失。 只要我拿起“plant\u stat\u panel.image=plant\u stat\u img”,它就会停止占用内存。为了停止内存消耗,更新图像和清理图像的正确方法是什么 from tkinter import * from PIL import ImageTk, Image root= Tk() def img_updater(): plant_stat_im

我有一个图像显示在主页上,我每10秒更新一次。我打开图像,设置标签,然后引用回图像,这样它就不会被垃圾收集并消失。 只要我拿起“plant\u stat\u panel.image=plant\u stat\u img”,它就会停止占用内存。为了停止内存消耗,更新图像和清理图像的正确方法是什么

from tkinter import *
from PIL import ImageTk, Image

root= Tk()

def img_updater():
    plant_stat_img = ImageTk.PhotoImage(Image.open("/home/pi/wateringsys/html/temp.png"))#/home/pi/html/
    plant_stat_panel = Label(root, image = plant_stat_img)
    plant_stat_panel.image = plant_stat_img
    plant_stat_panel.grid(row = 5,column = 0, columnspan=2, sticky = W )

    root.after(10000, img_updater)

root.after(0,img_updater)
root.mainloop() 

目前,您每10秒制作一个新标签,并覆盖(而不是删除)旧标签。您需要创建一次标签,并更新标签,而不是每次创建一个新标签

from tkinter import *
from PIL import ImageTk, Image

root= Tk()
plant_stat_panel = Label(root)
plant_stat_panel.grid(row = 5,column = 0, columnspan=2, sticky = W )

def img_updater():
    plant_stat_img = ImageTk.PhotoImage(Image.open("/home/pi/wateringsys/html/temp.png"))#/home/pi/html/
    plant_stat_panel.config(image = plant_stat_img)
    plant_stat_panel.image = plant_stat_img
    root.after(10000, img_updater)

img_updater()
root.mainloop() 

一旦您使覆盖旧映像,python垃圾收集器将自动释放内存。在python中,您不需要担心内存分配

非常感谢,这工作做得很好!昨晚我在琢磨此事。