Multiprocessing is Awesome in Python
- 멀티프로세싱은 파이썬에서 코드를 병렬로 실행하여 여러 작업을 동시에 처리하는 기술입니다. 🚀
- 단일 프로세스 환경에서는 CPU 집약적인 작업이 완료될 때까지 다음 코드 실행이 지연되어 프로그램이 멈출 수 있습니다. ⏳
- 현대 컴퓨터의 다중 코어를 활용하여 여러 작업을 동시에 처리함으로써 CPU 바운드 작업의 실행 속도를 크게 향상시킵니다. ⚡
- 파이썬의
multiprocessing 모듈은 표준 라이브러리에 포함되어 있어 별도 설치 없이 Pool 객체를 사용하여 병렬 처리를 구현할 수 있습니다. 🛠️
with Pool() as pool:과 같은 컨텍스트 관리자를 사용하면 좀비 프로세스나 메모리 누수 없이 프로세스를 안전하게 관리하고 종료할 수 있습니다. 🛡️
pool.map(함수, 인자_리스트) 메서드를 통해 여러 인자에 대해 동일한 함수를 병렬로 적용하고 결과를 리스트로 반환할 수 있습니다. 🗺️
- 멀티프로세싱은 새로운 프로세스를 시작하는 오버헤드가 크므로, CPU 집약적인 작업에만 사용해야 하며, 그렇지 않은 경우 오히려 성능 저하를 초래할 수 있습니다. ⚠️
if __name__ == "__main__": 블록 내에 멀티프로세싱 관련 코드를 배치하는 것이 필수적입니다. 각 새 프로세스마다 새로운 파이썬 인터프리터가 시작되므로, 이 블록 밖에 있는 코드는 의도치 않게 여러 번 실행될 수 있습니다. 🏠
- 멀티프로세싱은 CPU 바운드 작업에 적합하며, 멀티스레딩이나 비동기 I/O는 I/O 바운드 작업에 사용되므로 혼동하지 않아야 합니다. 🧠
os.cpu_count()를 통해 컴퓨터의 CPU 코어 수를 확인하여 동시에 실행 가능한 프로세스 수를 파악할 수 있습니다. 🔢