<Python> 멀티 스레딩과 멀티 프로세싱

반응형

멀티 스레딩과 멀티 프로세싱은 병렬 처리 방식을 통해 파이썬의 성능을 향상시키는 방법입니다.

이 글에서는 멀티 스레딩과 멀티 프로세싱의 개념을 소개하고, 파이썬에서 이들을 사용하는 방법에 대해 설명합니다.

 

멀티 스레딩이란?

멀티 스레딩은 싱글 프로세스 내에서 여러 개의 스레드를 동시에 실행하는 방식입니다.

각 스레드는 독립된 작업을 수행하며, 프로세스의 메모리 영역을 공유합니다.

이로 인해 프로그램의 전체 실행 시간이 줄어들고, 자원이 효율적으로 사용될 수 있다고 합니다..

 

그러면 멀티 프로세싱이란?

멀티 프로세싱은 여러 개의 프로세스를 동시에 실행하는 방식입니다.

각 프로세스는 독립된 메모리 영역을 가지고 있으며, 프로세스 간 데이터 공유는 특수한 방법인 통신(IPC)을 사용합니다.

이 방식은 CPU 간에 작업을 분산시킬 수 있으므로, 프로그램의 성능을 상당히 향상시킬 수 있습니다.

 

파이썬에서 멀티 스레딩 사용하기

파이썬에서 멀티 스레딩을 사용하기 위해서는 threading 모듈을 사용합니다. 구현 방식은 아래 예시를 참조...!

import threading

def print_numbers():
    for i in range(10):
        print(i)

def print_chars():
    for char in 'abcdefghij':
        print(char)

# 스레드 생성
t1 = threading.Thread(target=print_numbers)
t2 = threading.Thread(target=print_chars)

# 스레드 시작
t1.start()
t2.start()

# 스레드가 작업을 완료할 때까지 기다림
t1.join()
t2.join()

# 프로그램 종료 메시지 출력
print('Done')

 

파이썬에서 멀티 프로세싱 사용하기

파이썬에서 멀티 프로세싱을 사용하기 위해서는 multiprocessing 모듈을 사용합니다.

여기서는 간단한 예제를 소개합니다.

import multiprocessing

def print_numbers():
    for i in range(10):
        print(i)

def print_chars():
    for char in 'abcdefghij':
        print(char)

# 프로세스 생성
p1 = multiprocessing.Process(target=print_numbers)
p2 = multiprocessing.Process(target=print_chars)

# 프로세스 시작
p1.start()
p2.start()

# 프로세스가 작업을 완료할 때까지 기다림
p1.join()
p2.join()

# 프로그램 종료 메시지 출력
print('Done')

 

멀티 스레딩과 멀티 프로세싱의 차이점

멀티 스레딩과 멀티 프로세싱은 모두 병렬 작업을 가능하게 하지만 차이점이 있습니다.

멀티 스레딩은 같은 메모리 공간을 공유하기 때문에, 데이터 공유가 쉽지만 전역 인터프리터 락(GIL) 때문에 하나의 스레드만 실행할 수 있습니다. 반면에 멀티 프로세싱은 독립적인 메모리 공간을 사용하므로 전역 인터프리터 락(GIL)의 제한이 없지만, 프로세스 간 데이터 공유가 어렵습니다...

 

따라서, 작업이 주로 I/O 바운드인 경우 멀티 스레딩을 사용, CPU 바운드인 경우 멀티 프로세싱을 사용하는 것이 좋습니다.

 

이 글에서는 멀티 스레딩과 멀티 프로세싱의 개념을 소개하고 파이썬에서 이들을 사용하는 방법을 설명했습니다. 

 

감사합니다.

Designed by JB FACTORY