Study/Python

python에서 특정 함수를 일정 주기마다 실행하고 싶으면? threading.Timer를 사용해보자


기본 사용방법은 아래와 같다.


import threading

class AsyncTask:
def __init__(self):
pass

def TaskA(self):
print 'Process A'
threading.Timer(1,self.TaskA).start()

def TaskB(self):
print 'Process B'
threading.Timer(3, self.TaskB).start()

def main():
print 'Async Function'
at = AsyncTask()
at.TaskA()
at.TaskB()

if __name__ == '__main__':
main()

수행 결과, TaskA는 1초마다, TaskB는 3초마다 수행되고 있다.


Async Function

Process A

Process B

Process A

Process A

Process B

Process A

Process A

Process A

Process B


핵심은 아래 함수이다.

threading.Timer(1,self.TaskA).start()

함수의 의미는 1초 후에 TaskA를 start하라는 의미이다.

TaskA 함수안에서 threading.Timer를 사용한다면 TaskA는 정해진 시간마다 주기적으로 수행되는 함수가 될 것이다.



가장 중요한 점은, TaskA를 최초의 한번은 수행햐주어야 한다는 점이다.

def main():
print 'Async Function'
at = AsyncTask()
at.TaskA()
at.TaskB()




0 0