CPython 파헤치기 : 따라 하면서 이해하는 파이썬 내부의 동작 원리

CPython 파헤치기 : 따라 하면서 이해하는 파이썬 내부의 동작 원리

$32.00
Description
인터프리터 레벨에서 살펴보는 파이선 내부 동작 원리
파이썬이 인터프리터 레벨에서 작동하는 방식을 이해하면 파이썬의 기능을 최대한 활용할 수 있고 애플리케이션을 최적화할 수 있다. 《CPython 파헤치기》에서는 파이썬 내부 동작의 비밀을 파헤치고 소스 코드를 파이썬 인터프리터로 컴파일하는 방법을 소개한다. 파이썬이 실제로 동작하는 방식을 심도 있게 이해할 수 있도록 연습 문제를 통해 리스트나 딕셔너리, 제너레이터 등 파이썬 구성 요소들의 내부 동작을 설명한다.

이 책에서 다루는 내용
* 개발 환경 구성하기
* 소스 코드 읽고 탐색하기
* CPython 소스 코드 컴파일하기
* CPython 메모리 관리 기능 이해하기
* 병렬성과 동시성을 통해 파이썬 코드 확장하기
* 코어 타입에 새로운 기능 추가하기
* 테스트 스위트 실행하기
* C와 파이썬 코드 디버깅하기
* CPython에 기여하기

저자

앤서니쇼,realpython.com튜토리얼팀

저자:앤서니쇼
정적인파이썬사용자이며파이썬소프트웨어재단의펠로다.열두살때부터프로그래밍을시작했으며15년후시애틀의한호텔에갇혀있다가파이썬과사랑에빠졌다.그후기존에배웠던다른언어들대신파이썬에대해연구하고글을쓰고온라인강의를만드는중이다.CPython을포함한크고작은오픈소스프로젝트에공헌하고있으며아파치소프트웨어재단멤버이기도하다.복잡한시스템을이해하고단순화해서사람들에게가르치는데열정을느낀다.

저자:realpython.com튜토리얼팀

짐앤더슨(JimAnderson)
오랫동안다양한언어로프로그래밍을해왔다.임베디드시스템,분산빌드시스템구축,해외벤더관리등의분야에서일했다.

조애나재블론스키(JoannaJablonski)
리얼파이썬의편집주간이다.프로그래밍언어못지않게사람들의언어도좋아한다.퍼즐과패턴,성가신디테일에대한사랑이번역가의길을걷게만들었다.그녀가파이썬이라는새로운언어와사랑에빠지는것은시간문제였다.2018년부터리얼파이썬에합류해파이썬사용자들의실력향상을돕고있다.

제이콥슈미트(JacobSchmitt)
온·오프라인학술및기술관련교육자료편집자로오랫동안일해왔다.2020년리얼파이썬에합류해여러뛰어난저자와개발자가쓴튜토리얼과글,책을편집하고있다.

역자:김성현
이썬으로프로그래밍에입문했고프로그래밍언어나데이터베이스같은기반기술의내부와분산시스템설계에관심이많다.현재는토스에서서버개발자로일하고있다.

역자:나동희
Python코어개발자.카카오소프트웨어엔지니어를거쳐현재LINE+소프트웨어엔지니어로근무중이다.

목차

1장CPython소스코드받기
1.1소스코드에포함된것들

2장개발환경구성하기
2.1편집기와통합개발환경
2.2비주얼스튜디오구성하기
2.3비주얼스튜디오코드구성하기
-2.3.1설치
-2.3.2권장되는확장
-2.3.3고급코드탐색및펼치기사용
-2.3.4작업과실행파일을설정하기
2.4젯브레인스CLion구성하기
2.5Vim구성하기
2.6요약

3장CPython컴파일하기
3.1macOS에서CPython컴파일하기
3.2리눅스에서CPython컴파일하기
3.3수정된CPython설치하기
3.4make입문
3.5CPythonmake타깃
-3.5.1빌드타깃
-3.5.2데스트타깃
-3.5.3정리타깃
-3.5.4기타타깃
3.6윈도우에서CPython컴파일하기
-3.6.1의존성설치하기
-3.6.2명령프롬프트에서컴파일하기
-3.6.3비주얼스튜디오에서컴파일하기
3.7프로파일기반최적화
3.8요약

4장파이썬언어와문법
4.1CPython이파이썬이아니라C로작성된이유
4.2파이썬언어사양
-4.2.1파이썬언어레퍼런스
-4.2.2문법파일
4.3파서생성기
4.4문법다시생성하기
-4.4.1토큰
4.5요약

5장구성과입력
5.1구성상태
-5.1.1딕셔너리초기화구성
-5.1.2연관된소스파일목록
-5.1.3런타임구성구조체
-5.1.4명령줄로런타임구성설정하기
-5.1.5런타임플래그확인하기
5.2빌드구성
5.3입력에서모듈만들기
-5.3.1연관된소스파일목록
-5.3.2입력과파일읽기
-5.3.3명령줄문자열입력
-5.3.4로컬모듈입력
-5.3.5표준입력또는스크립트파일입력
-5.3.6컴파일된바이트코드입력
5.4요약

6장렉싱과파싱
6.1CST생성
6.2파서-토크나이저
-6.2.1연관된소스파일목록
-6.2.2파일데이터를파서에입력하기
-6.2.3파서-토크나이저의흐름
6.3추상구문트리
-6.3.1연관된소스파일목록
-6.3.2인스타비즈로AST시각화하기
-6.3.3AST컴파일
6.4중요한용어들
6.5예제:'거의같음'비교연산자추가하기
6.6요약

7장컴파일러
7.1컴파일러인스턴스생성
7.2퓨처플래그와컴파일러플래그
-7.2.1퓨처플래그
-7.2.2파이썬3.9의퓨처플래그목록
-7.2.3컴파일러플래그
7.3심벌테이블
-7.3.1연관된소스파일목록
-7.3.2심벌테이블구조체
-7.3.3symtable모듈
-7.3.4심벌테이블구현
7.4핵심컴파일과정
-7.4.1파이썬에서컴파일러사용하기
-7.4.2컴파일러CAPI
-7.4.3명령
-7.4.4기본프레임블록
-7.4.5명령어와인자
7.5어셈블리
-7.5.1어셈블러구조체
-7.5.2어셈블러의깊이우선탐색알고리즘
-7.5.3어셈블러CAPI
-7.5.4깊이우선탐색
7.6코드객체생성
7.7인스타비즈로코드객체시각화하기
7.8예제:'거의같음'연산자구현하기
7.9요약

8장평가루프
8.1스레드상태생성하기
-8.1.1스레드상태
-8.1.2연관된소스파일목록
8.2프레임객체생성하기
-8.2.1프레임객체
-8.2.2연관된소스파일목록
-8.2.3프레임객체초기화API
8.3프레임실행
-8.3.1프레임실행추적
8.4값스택
-8.4.1바이트코드명령예제:BINARY_OR
-8.4.2값스택시뮬레이션
-8.4.3스택효과
8.5예제:리스트에요소를추가하기
8.6요약

9장메모리관리
9.1메모리할당
-9.1.1정적메모리할당
-9.1.2자동메모리할당
-9.1.3동적메모리할당
9.2파이썬메모리관리시스템의설꼐
-9.2.1할당자도메인
-9.2.2메모리할당자
9.3CPython메모리할당자
-9.3.1연관된소스파일목록
-9.3.2중요한용어들
-9.3.3블록,풀,아레나
-9.3.4블록할당API
-9.3.5파이썬디버그API사용하기
9.4객체와PyMem메모리할당자도메인
-9.4.1tracemalloc모듈사용하기
9.5저수준메모리할당자도메인
9.6사용자지정도메인할당자
9.7사용자지정메모리할당검사기
-9.7.1AddressSanitizer
-9.7.2MemorySanitizer
-9.7.3UndefinedBehaviorSanitizer
9.8PyArean메모리아레나
-9.8.1연관된파일목록
9.9참조카운팅
-9.9.1파이썬에서변수생성과정
-9.9.2참조카운트증가시키기
-9.9.3참조카운트감소시키기
-9.9.4바이트코드연산에서의참조카운팅
-9.9.5CPython참조카운터의장점
9.10가비지컬렉션
-9.10.1연관된소스파일목록
-9.10.2가비지컬렉터설계
-9.10.3가비지컬렉션대상인컨테이너타입
-9.10.4추적에서제외할수있는객체들과가변성
-9.10.5가비지컬렉션알고리즘
-9.10.6세대별가비지컬렉션
-9.10.7파이썬에서가비지컬렉터API사용하기
9.11요약

10장병렬성과동시성
10.1병렬성과동시성모델
10.2프로세스의구조
10.3멀티프로세스를활용한병렬실행
-10.3.1POSIX에서프로세스포크하기
-10.3.2윈도우에서의멀티프로세싱
-10.3.3multiprocessing패키지
-10.3.4연관된소스파일목록
-10.3.5프로세스스폰과포크
-10.3.6큐와파이프를사용해데이터교환하기
-10.3.7프로세스간의공유상태
-10.3.8애플리케이션예제
-10.3.9멀티프로세싱요약
10.4멀티스레딩
-10.4.1GIL
-10.4.2연관된소스파일목록
-10.4.3파이썬스레드시작하기
-10.4.4스레드상태
-10.4.5POSIX스레드
-10.4.6윈도우스레드
-10.4.7멀티스레딩요약
10.5비동기프로그래밍
10.6제너레이터
-10.6.1제너레이터의구조
-10.6.2연관된소스파일목록
-10.6.3제너레이터생성하기
-10.6.4제너레이터실행하기
10.7코루틴
-10.7.1연관된소스파일목록
-10.7.2이벤트루프
-10.7.3예제
10.8비동기제너레이터
10.9서브인터프리터
-10.9.1연관된소스파일목록
-10.9.2예제
10.10요약

11장객체와타입
11.1내장타입들
11.2객체와가변객체타입
11.3type타입
-11.3.1타입슬록
-11.3.2C타입사용하기
-11.3.3타입프로퍼티딕셔너리
11.4bool과long타입
-11.4.1long타입
-11.4.2예제
11.5유니코드문자열타입
-11.5.1연관된소스파일목록
-11.5.2유니코드코드포인트처리하기
-11.5.3UTF-8대UTF-16
-11.5.4확장(wide)문자타입
-11.5.5바이트순서표식
-11.5.6encodings패키지
-11.5.7코덱모듈
-11.5.8코덱구현
-11.5.9내부코덱
-11.5.10예제
11.6딕셔너리타입
-11.6.1해싱
-11.6.2연관된소스파일목록
-11.6.3딕셔너리의구조
-11.6.4검색
11.7요약

12장표준라이브러리
12.1파이썬모듈
12.2파이썬과C가혼용된모듈

13장테스트스위트
13.1윈도우에서테스트스위트실행하기
13.2리눅스와macOS에서테스트스위트실행하기
13.3테스트플래그
13.4특정테스트만실행하기
13.5테스트모듈
13.6테스트유틸리티
13.7요약

14장디버깅
14.1크래시핸들러
14.2디버그지원컴파일하기
-14.2.1윈도우
-14.2.2macOS또는리눅스
14.3macOS에서LLDB사용하기
-14.3.1중단점추가하기
-14.3.2CPython실행하기
-14.3.3실행중인CPython인터프리터에연결하기
-14.3.4중단점사용하기
-14.3.5cpython_lldb확장
14.4GDB사용하기
-14.4.1중단점추가하기
-14.4.2CPython실행하기
-14.4.3실행중인CPython인터프리터에연결하기
-14.4.4중단점사용하기
-14.4.5pthon-gdb확장
14.5비주얼스튜디오디버거사용하기
-14.5.1중단점추가하기
-14.5.2디버거실행하기
-14.5.3중단점사용하기
14.6CLion디버거사용하기
-14.6.1Make애플리케이션디버깅
-14.6.2디버거연결하기
-14.6.3중단점추가하기
-14.6.4중단점사용하기
14.7요약

15장벤치마킹,프로파일링,실행추적
15.1timeit으로마이크로벤치마크실행하기
-15.1.1timeit예제
15.2파이썬벤치마크스위트로런타임벤치마크실행하기
-15.2.1벤치마크실행하기
-15.2.2벤치마크비교하기
15.3cProfile로파이썬코드프로파일링하기
-15.3.1프로파일결과내보내기
15.4DTrace로C코드프로파일링하기
-15.4.1연관된소스파일목록
-15.4.2DTrace설치
-15.4.3DTrace지원컴파일하기
-1.5.4.4CLion에서DTrace사용하기
-15.4.5DTrace예제
15.5요약

16장다음단계
16.1CPython용C확장작성하기
16.2파이썬애플리케이션개선하기
16.3CPython프로젝트에기여하기
16.3.1이슈분류하기
16.3.2이슈수정을위해풀리퀘스트제출하기
16.3.3다른방식으로기여하기

부록A파이썬프로그래머

출판사 서평

이책에서다루는내용
*개발환경구성하기
*소스코드읽고탐색하기
*CPython소스코드컴파일하기
*CPython메모리관리기능이해하기
*병렬성과동시성을통해파이썬코드확장하기
*코어타입에새로운기능추가하기
*테스트스위트실행하기
*C와파이썬코드디버깅하기
*CPython에기여하기

추천글

이책은파이썬에대한더깊이있는지식을얻고자하는모든사람에게꼭필요한정보를제공한다.-댄베이더

CPython을‘해킹’해보고싶은분들께이책을추천한다.-히도판로쉼(파이썬창시자)
파이썬언어자체를알려주는책은많이있지만호기심많은사람들에게파이썬내부를설명하는책은없었다.-밀란파텔((주요투자은행)부사장)