2015-01-02 2 views
1

비슷한 코드 구조를 여러 번 반복 했으므로 threading.Thread 구현에서이 코드를 보았을 때 회귀 함수가 아니므로 더 이상 메모리를 사용하지 말라는 질문을 할 필요가있었습니다. 전화 해 ... 그렇지?.after() 메서드 재귀 호출

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

거의 확실하게 재귀 호출은 아니지만 'self.master'의 유형에 대해 알려주지 않으면 확신 할 수 없습니다. 대부분의 경우 메서드는 메서드에 대한 첫 번째 호출이 반환 된 후 'periodicCall' 메서드를 호출하도록합니다. – Duncan

+0

안녕 Duncan. 여기에있는 'self.master'는 전체 프로그램의 루트라고 가정합니다. 즉, 일반적으로 import 문을 호출하는 곳과 같은 수준입니다. –

답변

2

periodicCall 메서드는 직접 호출하지 않습니다. 그것은 재귀 적 호출이 아닙니다.

주어진 시간에 메소드를 호출하기 위해 tkinter 이벤트 루프를 요청합니다. 메모리 소비에 대해 걱정할 필요가 없습니다.

+0

안녕하세요. 나는 당신과 @Duncan 둘 다 해명에 감사 드리고 싶습니다. –

0

이 메서드는 재귀가 아닙니다.

콜백은 after()를 호출 할 때마다 한 번만 실행됩니다. 이 함수를 반복적으로 호출하려면 콜백을 자체 내부에서 다시 등록해야합니다.