Python 스레드와 스레드 풀 병렬처리 방법 및 예제

파이썬에서 스레드(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

댓글