[파이썬] 다중 스레드와 루프의 연계

Python은 다중 스레딩과 루프를 효과적으로 연계하여 복잡한 작업을 처리할 수 있는 강력한 언어입니다. 이번 블로그에서는 다중 스레딩과 루프를 함께 사용하여 프로그램의 성능을 향상시키는 방법에 대해 알아보겠습니다.

다중 스레드를 사용한 병렬 처리

다중 스레드를 사용하여 병렬 처리를 구현하는 것은 Python에서 많이 사용되는 기술입니다. 스레드는 각각 독립적으로 실행되는 작은 작업 단위로, 여러 개의 스레드를 동시에 실행하여 작업을 분산시킬 수 있습니다.

import threading

# 작업을 실행할 스레드 클래스 정의
class MyThread(threading.Thread):
    def __init__(self, num):
        threading.Thread.__init__(self)
        self.num = num
    
    def run(self):
        # 스레드가 실행할 작업 정의
        print("Thread", self.num, "started")
        for i in range(1, 11):
            print("Thread", self.num, ":", i)
        print("Thread", self.num, "finished")

# 다중 스레딩으로 작업 실행
num_threads = 5
threads = []
for i in range(num_threads):
    thread = MyThread(i+1)
    thread.start()
    threads.append(thread)

# 모든 스레드의 작업이 끝날 때까지 기다림
for thread in threads:
    thread.join()

위의 예제 코드는 5개의 스레드를 생성하여 각각 1부터 10까지의 숫자를 출력하는 작업을 동시에 실행합니다. 각 스레드는 독립적으로 실행되고, 작업이 완료될 때까지 기다립니다. 이를 통해 병렬적으로 작업을 처리할 수 있습니다.

루프와 다중 스레드의 조합

다중 스레드와 루프를 조합하여 더욱 효과적인 프로그래밍을 할 수 있습니다. 예를 들어, 여러 개의 작업을 동시에 실행하고 결과를 모아서 처리해야 할 경우에 유용하게 사용할 수 있습니다.

import threading

# 작업을 실행할 스레드 클래스 정의
class MyThread(threading.Thread):
    def __init__(self, num):
        threading.Thread.__init__(self)
        self.num = num
        self.result = []
    
    def run(self):
        # 스레드가 실행할 작업 정의
        print("Thread", self.num, "started")
        for i in range(1, 11):
            self.result.append(i * self.num)
        print("Thread", self.num, "finished")
    
    def get_result(self):
        return self.result

# 다중 스레딩으로 작업 실행
num_threads = 5
threads = []
for i in range(num_threads):
    thread = MyThread(i+1)
    thread.start()
    threads.append(thread)

# 모든 스레드의 작업이 끝날 때까지 기다림
for thread in threads:
    thread.join()

# 각 스레드의 결과를 출력
for thread in threads:
    result = thread.get_result()
    print("Thread", thread.num, "result:", result)

위의 예제 코드는 5개의 스레드를 생성하여 각각 1부터 10까지의 숫자를 곱한 결과를 리스트에 저장한 후 출력합니다. 각 스레드의 결과를 가져와서 처리하기 위해 get_result() 메소드를 사용합니다. 이를 통해 다중 스레딩과 루프를 조합하여 복잡한 작업을 효과적으로 처리할 수 있습니다.

다중 스레딩과 루프의 연계는 Python에서 병렬 처리와 성능 향상을 위해 유용한 기술입니다. 다양한 작업을 동시에 실행하고 결과를 모아서 처리할 때 다중 스레드의 활용법을 익혀보세요. Happy coding!