Python 제대로 알고 써먹기 - CPython 파헤치기

Written by on
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. 스터디 준비 (1-2주 전)
    • [발표자] 스터디 시간에 공유할 내용을 파악 및 정리하고, 관련하여 제공할 미션을 준비합니다.
    • [스터디원] 스터디 내용에 대해 해당 챕터를 스터디 전에 미리 학습합니다.
  2. 스터디 진행
    • [발표자] 발표 자료를 노션에 정리하여 공유합니다.
    • [스터디원] 발표 내용에 대한 질문 사항을 자유롭게 남깁니다. (slido를 통해 익명으로도 편하게 질문을 남길 수 있는 분위기를 만들고자 합니다😌)
  3. 스터디 이후 (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 회고 및 최종 리뷰 🥳