Python과 Go를 짝지어 멀티프로세싱·멀티스레딩·비동기를 정복하는 종합 학습 로드맵입니다. 동시성 기초부터 동기화, 통신, 실전 통합 프로젝트까지 6단계로 도장을 깨며 나아갑니다.
동시성 학습의 출발점 — 운영체제가 프로그램을 실행하는 방식(프로세스·스레드·컨텍스트 스위치)을 이해하고, 동시성 vs 병렬성의 차이와 Python/Go가 채택한 동시성 모델을 개괄합니다.
I/O-집약 작업을 처리하는 핵심 도구 — Python threading이 GIL 아래에서도 왜 I/O엔 효과적인지, 그리고 Go의 고루틴이 왜 스레드보다 훨씬 가벼운지(M:N 스케줄러)를 같은 크롤링 벤치마크로 비교합니다.
CPU-집약 작업을 진짜 병렬로 돌리는 방법 — Python multiprocessing/ProcessPoolExecutor로 GIL을 우회하고, Go의 GOMAXPROCS와 데이터 레이스의 위험성을 같은 소수/해시 벤치마크로 비교합니다.
여러 실행 단위가 공유 상태에 접근할 때 데이터 레이스를 막는 동기화 — Python Lock/RLock/Semaphore/Event와 Go sync.Mutex/atomic/WaitGroup을 비교하고, 반드시 피해야 할 데드락 4대 조건을 다룹니다.
동시성의 또 하나의 큰 축, 메시지 전달 — Python queue.Queue/multiprocessing.Queue/Pipe와 Go channel+select를 비교하고, Fan-out/Fan-in 파이프라인 패턴으로 대량 작업을 분배하고 수집합니다.
배운 모든 것을 통합하는 실전 프로젝트 — 대량 URL을 크롤링하는 워커 풀을 Python(asyncio·재사용)과 Go(고루틴·채널)로 각각 구현하고, 처리량·메모리·코드 복잡도를 비교·회고하며 시리즈를 마무리합니다.