티스토리 뷰

[Python]

[Python] Thread & Timer

춘햄 2021. 5. 4. 21:15

Python의 Thread도 자바와 동일하게 동시에 여러 함수나 프로그램을 실행할 수 있도록 해주며, 이는 Python을 활용한 대부분의 응용 프로그램에서 유용하게 사용이 가능하다.

파이썬에서 멀티 스레딩이나 타이머 기능을 사용하기 위해서는 우선 threading 모듈을 import 해줘야한다. 

바로 예제를 하나 보도록 하자


import threading

def count(start, end):
    for i in range(start,end):
        print(i)

thread = threading.Thread(target=count, args=(1, 10))
thread.start()

print('hey! my name is main')

위와 같이 간단한 스레딩 예제 코드를 적어봤다.

실행해보면, 

이렇게, 메인함수에서 start() 뒤에 실행시킨 print가 스레드가 실행되는 도중에 따로 실행되는 것을 알 수 있다.


또한 다음과 같이 join을 이용하여 스레드의 순서를 제어할 수도 있다.

import threading

def count(start, end):
    for i in range(start,end):
        print(i)

thread = threading.Thread(target=count, args=(1, 10))
thread.start()
thread.join()
print('hey! my name is main')

위 코드는 join()을 사용했기 때문에 해당 스레드를 생성한 매서드를 스레드와 동시에 실행하지 않고, 자식 스레드의 종료를 기다려준 뒤 실행된다.


또한 이 threading 모듈을 이용하여 타이머 또한 구현이 가능하다.

import threading

def run():
    print('Hi! I\'m threading!')
    threading.Timer(5, run).start()

print('hey! my name is main')
run()

위와 같이 재귀함수 형식으로 타이머를 구성 후, 사용할 수 있다.

 

 

Comments