.after()方法递归

时间:2015-01-02 16:23:46

标签: python recursion tkinter

多次遇到类似的代码结构,当我在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

2 个答案:

答案 0 :(得分:2)

periodicCall方法不直接调用自身;这不是一个递归的电话。

它请求tkinter事件循环在给定时间内调用该方法;无需担心内存消耗。

答案 1 :(得分:0)

该方法不是递归的。

每次调用after()后,回调只运行一次。要重复调用它,您需要在其内部重新注册回调。