[python] 파이썬에서의 멀티스레딩과 멀티프로세싱 코딩 방법

파이썬에서 멀티스레딩과 멀티프로세싱을 사용하면 병렬로 작업을 처리할 수 있습니다. 이것은 작업을 더 효율적으로 처리하여 시간을 단축할 뿐만 아니라 CPU 및 기타 시스템 자원을 효율적으로 활용할 수 있게 해줍니다. 이 기사에서는 파이썬에서 멀티스레딩과 멀티프로세싱을 구현하는 방법을 살펴보겠습니다.

멀티스레딩 (Multi-threading)

멀티스레딩을 사용하면 동시에 여러 작업을 처리할 수 있습니다. 파이썬에서 멀티스레딩을 구현하기 위해서는 threading 모듈을 사용할 수 있습니다. 다음은 간단한 예제 코드입니다.

import threading

def task(name):
    print(f"Executing task {name}\n")

# 쓰레드 생성
t1 = threading.Thread(target=task, args=('A',))
t2 = threading.Thread(target=task, args=('B',))

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

# 쓰레드 종료 대기
t1.join()
t2.join()

print("All tasks completed")

위의 코드에서 task 함수를 만들고, threading.Thread을 사용하여 쓰레드를 생성한 후, start()를 호출하여 쓰레드를 실행하고, join()을 사용하여 쓰레드가 종료될 때까지 대기합니다.

멀티프로세싱 (Multi-processing)

멀티프로세싱은 여러 개의 프로세스를 사용하여 동시에 작업을 처리합니다. 파이썬에서 멀티프로세싱을 구현하기 위해서는 multiprocessing 모듈을 사용할 수 있습니다. 다음은 간단한 예제 코드입니다.

import multiprocessing

def task(name):
    print(f"Executing task {name}\n")

# 프로세스 생성
p1 = multiprocessing.Process(target=task, args=('A',))
p2 = multiprocessing.Process(target=task, args=('B',))

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

# 프로세스 종료 대기
p1.join()
p2.join()

print("All tasks completed")

위의 코드에서 task 함수를 만들고, multiprocessing.Process를 사용하여 프로세스를 생성한 후, start()를 호출하여 프로세스를 실행하고, join()을 사용하여 프로세스가 종료될 때까지 대기합니다.

이제 당신은 멀티스레딩과 멀티프로세싱을 사용하여 파이썬에서 병렬 작업을 수행하는 방법을 익혔습니다. 이러한 기술은 대규모 작업을 처리하거나 시스템 자원을 효율적으로 활용해야 하는 경우에 유용하게 활용될 수 있습니다.

파이썬 공식 문서 - threading 모듈

파이썬 공식 문서 - multiprocessing 모듈

이 상세한 내용은 위의 공식 문서에서 확인하실 수 있습니다.

좀 more 과언 팁: 멀티 프로세싱을 사용할 때, 데이터 공유나 통신에 대한 고려가 필요합니다. 이때는 multiprocessing.Manager, multiprocessing.Queue, multiprocessing.Pipe 등의 도구를 사용하여 데이터를 안전하게 공유하고 통신할 수 있습니다.