Python 제대로 알고 써먹기 - CPython 파헤치기
안녕하세요! 가짜연구소 8기 “Python 제대로 알고 써먹기 - CPython 파헤치기” 프로젝트를 빌드하게 된 전희선입니다 :) 이번 글에서는 8기 동안 진행하게 될 CPython 프로젝트에 대해서 간단히 소개하고자 합니다.
“Python 제대로 알고 써먹기 - CPython 파헤치기” 프로젝트 소개
데이터를 다루는 개발자로서 Python은 어떤 언어보다도 많이 사용하고 있지만, 정작 내부 구조는 잘 알고 있지 못한 채 쓰고 있다는 생각이 들었습니다. 이번 “Python 제대로 알고 써먹기 - CPython 파헤치기” 프로젝트를 통해 Python의 내부 구현체인 CPython을 파헤쳐 보면서 Python을 보다 효율적으로 사용하고 깊이 있게 트러블슈팅할 수 있도록 하고자 합니다. 더불어 내부 구조를 살펴보면서 CS 기초도 다져보고, 나아가서 추후에는 CPython 오픈소스에 컨트리뷰션할 수 있는 발판을 마련하고자 합니다.
빌더 소개
네이버에서 지식그래프 조회 API 구축 및 품질 검증을 진행하고 있는 전희선이라고 합니다 🤗 가짜연구소에서는 지난 5-7기까지 러너로서 DE4E(Data Engineering for Everybody)라는 데이터 엔지니어링 초심자를 위한 가이드라인 구축 프로젝트에 참여했습니다. 보다 자세한 소개는 노션 링크에서 확인하실 수 있습니다 :)
- Linkedin: http://linkedin.com/in/heeseon-cheon
- Github: https://github.com/heehehe
프로젝트 목적
- CPython의 내부 작동 원리 이해: Python을 보다 효율적으로 사용하기 위해 Python의 내부 구조와 동작 원리를 깊이 이해하고자 합니다.
- 성능 최적화: 메모리 관리, 병렬 처리 및 코드 최적화 방법 등을 배워 Python 프로그램의 성능을 향상 시키고자 합니다.
- 고급 Python 기능 마스터링: Python의 고급 기능과 표준 라이브러리에 대한 깊이 있는 지식을 얻어, 보다 효율적이고 강력한 코드를 작성하고자 합니다.
- 문제 해결 능력 강화: CPython의 구조와 원리를 이해함으로써 버그를 더 빨리 찾아내고 해결하는 능력을 향상 시키고자 합니다.
프로젝트 계획
“CPython 파헤치기: 따라 하면서 이해하는 파이썬 내부의 동작 원리” 도서를 기반으로 진행합니다. 주차별로 2명씩 담당하여 스터디를 준비하는 식으로 진행되며, 각자 담당한 챕터만 이해하고 넘어가는 상황을 최대한 지양하고자 아래와 같은 과정으로 진행해보고자 합니다.
- 스터디 준비 (1-2주 전)
- [발표자] 스터디 시간에 공유할 내용을 파악 및 정리하고, 관련하여 제공할 미션을 준비합니다.
- [스터디원] 스터디 내용에 대해 해당 챕터를 스터디 전에 미리 학습합니다.
- 스터디 진행
- [발표자] 발표 자료를 노션에 정리하여 공유합니다.
- [스터디원] 발표 내용에 대한 질문 사항을 자유롭게 남깁니다. (slido를 통해 익명으로도 편하게 질문을 남길 수 있는 분위기를 만들고자 합니다😌)
- 스터디 이후 (1주 이내)
- [발표자] 발표 자료를 외부에 공유하기 위하여 https://github.com/Pseudo-Lab/CPython-Guide 에 업로드합니다.
- [스터디원] 발표자께서 준비해주신 미션을 수행하여 Github repo 등을 통해 제출합니다.
[정기 모임 시간 & 장소]
- 시간: 월요일 오후 9시 ~ 10시 30분 (온라인)
- 장소: 디스코드 / 오프라인
- 오프라인 모임은 월 1회 정도 진행되며, 수도권(강남 등)에서 모일 예정입니다. (모임 날짜는 1-2주 전 투표로 결정하고자 합니다.)
주차별 목표
날짜 | 제목 | 설명 |
---|---|---|
2024/03/11 | OT & Chapter 1-2. 개발 환경 구성하기 | |
2024/03/18 | Chapter 3-4. 컴파일하기 / 언어와 문법 | |
2024/03/25 | Chapter 5. 구성과 입력 | |
2024/04/01 | ~ 휴강 ~ | 빌더 사정으로 인하여 한 주 쉬어갑니다 |
2024/04/13 | Chapter 6. 렉싱과 파싱 / 오프라인 첫 모임 🤗 | 스터디 함께 진행하시는 분들과 처음 오프라인으로 인사 나누는 시간을 가지려고 합니다 😊 (모임 날짜 논의 예정) |
2024/04/22 | Chapter 7. 컴파일러 | |
2024/04/29 | Chapter 8. 평가 루프 | |
2024/05/06 | Chapter 9. 메모리 관리(1) - 메모리 할당 | |
2024/05/13 | Chapter 9. 메모리 관리(2) - 참조 카운팅 & 가비지 컬렉션 | |
2024/05/18 | Chapter 10. 병렬성과 동시성(1) - 멀티프로세스 | |
2024/05/27 | Chapter 10. 병렬성과 동시성(2) - 멀티스레딩 / 오프라인 중간 점검 👀 | 챕터 9-10이 특히 어려울 것으로 예상되어 오프라인으로 같이 중간 점검을 해보고자 합니다 🙂 (모임 날짜 논의 예정) |
2024/06/03 | Chapter 11. 객체와 타입 | |
2024/06/10 | Chapter 12-13. 표준 라이브러리 / 테스트 스위트 | |
2024/06/17 | Chapter 14. 디버깅 | |
2024/06/22 | Chapter 15. 벤치마킹, 프로파일링, 실행 추적 | |
2024/06/29 | 회고 및 최종 리뷰 🥳 |