파이썬에서 스레드(thread)를 사용하여 병렬처리를 하는 방법과 예제를 보도록 하겠습니다.
스레드를 사용하여 동시에 여러개 함수를 실행할 수 있습니다.
threading.Thread 클래스에서 실행할 함수를 target 지정합니다.
start()를 시작하면 스레드 처리가 됩니다.
스레드
스레드 간단 예제
import time
import threading
def func1():
while True:
print("func1")
time.sleep(1)
def func2():
while True:
print("func2")
time.sleep(1)
if __name__ == "__main__":
thread_1 = threading.Thread(target=func1)
thread_2 = threading.Thread(target=func2)
thread_1.start()
thread_2.start()
결과
func1
func2
func2
func1
func1
func2
func2
func1
스레드 풀 concurrent.futures
Python 3.2 이후에서는 더욱 업그레이드된 concurrent.futures가 있습니다.
concurrent.futures에 있는 스레드 풀 ThreadPoolExecutor 클래스를 사용해보겠습니다.
ThreadPoolExecutor에서는 병렬 처리를 할 최대 동작(max_workers)이 가능한 개수를 정할 수 있습니다.
스레드 풀 예제
import time
import concurrent.futures
def func1():
while True:
print("func1")
time.sleep(1)
def func2():
while True:
print("func2")
time.sleep(1)
if __name__ == "__main__":
executor = concurrent.futures.ThreadPoolExecutor(max_workers=2)
executor.submit(func1)
executor.submit(func2)
결과
func1
func2
func1
func2
func1
func2
func1
func2
댓글