인프런과 함께하는 파이썬 동시성/병렬성/비동기 프로그래밍 강의 오픈
2021.10.29
파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지
안녕하세요. 인프런에서 강의를 오픈했습니다 🙂
이 강의 목적은 크게 두 가지입니다. 동시성·병렬성·비동기 프로그래밍의 개념을 정확히 이해하는 것과 어떤 상황에서 어느 코드를 사용하는지 알려드리는 것입니다. 강의 후반부에는 동시성 프로그래밍을 통해 실제 프로젝트를 진행하면서 해당 개념을 이론 숙지를 넘어 실제로 실무에서도 사용할 수 있도록 도와드립니다.
동시성 프로그래밍
클라이언트와 서버 간 통신
시스템 디스크 파일 읽기/쓰기
데이터베이스 쿼리 작업
API 사용
병렬성 프로그래밍
비디오, 오디오 또는 이미지 처리
컴퓨터 비전
머신러닝
딥러닝
동시성·비동기·병렬성 프로그래밍을파이썬 최신 문법으로
파이썬 버전 3.7 이후 동시성·비동기·병렬성 프로그래밍에 대한 지원이 대폭 늘어났습니다. 이에 대한 수요가 커지면서 동시성·비동기·병렬성 프로그래밍을 지원하는 프레임워크 및 라이브러리도 많이 등장하고 있습니다. 하지만 버전마다 바뀌는 파이썬 문법에 어려움을 겪는 분들이 많습니다. 또 이론으로는 배웠으나 실제로 언제 어떻게 문법을 적용해야 하는지 모르는 분도 많습니다.이 강좌는 동시성·비동기·병렬성에 대한 개념을 파이썬 최신 문법에 맞추어 실습까지 진행해 바로 적용할 수 있도록 도와드립니다.
이 강의는 이렇게 진행됩니다

파이썬 코루틴과 비동기 함수
기본적인 용어 정리와 파이썬 코루틴에 대해 알아보기
바운드, 블로킹, 동기, 비동기, 서브루틴, 코루틴 등 중요하지만 헷갈리는 용어를 마인드맵과 코드를 통해 설명하며 정리합니다.
코루틴을 사용하여 파이썬에서 기본적인 비동기 프로그래밍을 하는 방법을 소개합니다. 그리고 특정 상황에서 속도 향상을 위해 반드시 비동기 프로그래밍을 사용해야만 하는 이유를 실무 예시(네트워크 I/O, CPU 연산 등)를 통해 코드로 증명합니다.
파이썬 멀티 스레딩과 멀티 프로세싱
멀티 스레드? 멀티 프로세스? 동시성? 병렬성?
섹션 1에서 개발한 코루틴 기반의 프로그램을 멀티 스레드에서 동시성(병행성)을 사용하는 멀티 스레딩 기법을 사용하여 구현합니다. 이를 통해 동기 코드를 asyncio 모듈의 도움 없이 병행 처리하는 방법을 이해합니다. 또한 파이썬 GIL(Global Interpreter Lock)을 통해 파이썬에서 멀티 스레드로 병렬 프로그래밍을 할 수 없는 이유를 사례를 들어 설명합니다.
멀티 프로세싱 기법을 사용하여 병렬 처리를 하는 프로그램을 구현합니다. 이를 통해 파이썬에서 멀티 프로세스를 사용하는 방법에 대해 익히고 파이썬으로 분산 처리를 할 때 어떤 상황에서 어떤 방식으로 코드를 설계하는지 알려드립니다.
동시성 프로그래밍으로 데이터 수집
동시성·비동기 실제로 프로젝트에 응용하기
지금까지 배운 이론을 기반으로 웹 크롤러와 오픈 API를 사용한 데이터 수집기를 개발합니다. 실제 프로그램을 개발하면서 동시성 프로그래밍에 익숙해지는 시간을 가집니다.
실전 프로젝트 : "데이터 수집기 웹 앱" with FastAPI
동시성 프로그래밍으로 MongoDB CRUD, 데이터 시각화 및 웹 개발
지금까지 배운 이론을 기반으로 “데이터 수집기 웹 앱”을 개발합니다. 해당 프로젝트는 동시성 프로그래밍을 사용하여 웹에서 크롤링하고 수집한 데이터를 MongoDB에 저장합니다. MongoDB를 FastAPI와 연결하여 저장된 데이터를 적절하게 분석하여 시각화한 웹 앱을 개발합니다. 이 프로젝트를 통해 비동기·동시성 프로그래밍이 실무에서 사용되는 경우를 이해하고 적용할 수 있습니다.

AWS 클라우드 컴퓨팅으로 프로젝트 배포하기
프로젝트는 단순 개발에서 끝나지 않습니다. AWS 클라우드 컴퓨팅 기술을 사용하여 서버에 웹 앱을 배포하는 방법도 알려드립니다.
질문을 통해 업데이트되는 강의
이 강의에서 필요한 파이썬 문법 강의가 지속적으로 업로드됩니다.
중요한 질문은 보너스 강의에 지속적으로 답변하여 업로드합니다.