Python 正在寻找一种方法来阻止这个基本程序中的内存泄漏

Python 正在寻找一种方法来阻止这个基本程序中的内存泄漏,python,python-3.x,memory-leaks,tkinter,Python,Python 3.x,Memory Leaks,Tkinter,我是Python新手。此程序在Tk()窗口内创建标签。“hi”一词会无限期地写入标签中。如何删除旧的hi,同时无限期地编写新的hi?这就是我阻止内存泄漏的方法吗?代码如下: from tkinter import * def box(a): z=Label(root,text='%s'%(a)) z.place(width=50,height=20) def start(root): a="hi" box(a) root.after(100, star

我是Python新手。此程序在Tk()窗口内创建标签。“hi”一词会无限期地写入标签中。如何删除旧的hi,同时无限期地编写新的hi?这就是我阻止内存泄漏的方法吗?代码如下:

from tkinter import *

def box(a):
    z=Label(root,text='%s'%(a))
    z.place(width=50,height=20)

def start(root):
    a="hi"
    box(a)
    root.after(100, start, root)

root = Tk()
start(root)
root.mainloop()

不如每次都替换文本而不是创建
标签
对象

from tkinter import *

def box(a):
    z['text'] = a

def start(root):
    box('hi')
    root.after(100, start, root)

root = Tk()
z = Label(root, text='')
z.place(width=50, height=20)
start(root)
root.mainloop()


这无疑修复了内存泄漏,但现在pythonw的CPU使用率高达50%!!在我的代码中,它将从大约2%开始,并随着内存的增加而缓慢增加leaked@JohnW4,将
1
替换为
100
。我将值从100改为1来测试它。现在我更新了答案,将
1
更改为
100
from tkinter import *


def start(root, z):
    a = 'hi'
    z['text'] = a
    root.after(100, start, root, z)


root = Tk()
z = Label(root, text='')
z.place(width=50, height=20)

start(root, z)

root.mainloop()