多次遇到类似的代码结构,当我在threading.Thread
实现中看到这一点时,我只需要问一下,self.master.after(100, self.periodicCall)
行不会消耗越来越多的内存,因为它是一个递归的函数调用......它不是吗?
class arbitraryClass():
def __init__(self, master):
... # other miscellaneous codes not shown here
self.periodicCall() # within the __init__() method
def periodicCall(self):
self.doSomething() #arbitrary method
self.master.after(100, self.periodicCall)
... # other miscellaneous codes not shown here
答案 0 :(得分:2)
periodicCall
方法不直接调用自身;这不是一个递归的电话。
它请求tkinter事件循环在给定时间内调用该方法;无需担心内存消耗。
答案 1 :(得分:0)
该方法不是递归的。
每次调用after()后,回调只运行一次。要重复调用它,您需要在其内部重新注册回调。