본문 바로가기

추천 검색어

실시간 인기 검색어

CPython 파헤치기

인사이트

2022년 10월 14일 출간

종이책 : 2022년 09월 23일 출간

(개의 리뷰)
( 0% 의 구매자)
eBook 상품 정보
파일 정보 pdf (10.52MB)
ISBN 9788966263738
지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
교보eBook App 듣기(TTS) 가능
TTS 란?
텍스트를 음성으로 읽어주는 기술입니다.
  • 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를​ 읽을 수 있습니다.
  • 전자책 화면에 표기된 주석 등을 모두 읽어 줍니다.
  • 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
  • '교보 ebook' 앱을 최신 버전으로 설치해야 이용 가능합니다. (Android v3. 0.26, iOS v3.0.09,PC v1.2 버전 이상)

PDF 필기 Android 가능 (iOS예정)
정가제Free
소장
정가 : 25,600원

쿠폰적용가 23,040

10% 할인 | 5%P 적립

이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.

카드&결제 혜택

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
  • 리뷰 작성 시, e교환권 추가 최대 300원

작품소개

이 상품이 속한 분야

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

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

3장 CPython 컴파일하기
3.1 macOS에서 CPython 컴파일하기
3.2 리눅스에서 CPython 컴파일하기
3.3 수정된 CPython 설치하기
3.4 make 입문
3.5 CPython make 타깃
-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.1 CPython이 파이썬이 아니라 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.1 CST 생성
6.2 파서-토크나이저
-6.2.1 연관된 소스 파일 목록
-6.2.2 파일 데이터를 파서에 입력하기
-6.2.3 파서-토크나이저의 흐름
6.3 추상 구문 트리
-6.3.1 연관된 소스 파일 목록
-6.3.2 인스타비즈로 AST 시각화하기
-6.3.3 AST 컴파일
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.3 symtable 모듈
-7.3.4 심벌 테이블 구현
7.4 핵심 컴파일 과정
-7.4.1 파이썬에서 컴파일러 사용하기
-7.4.2 컴파일러 C API
-7.4.3 명령
-7.4.4 기본 프레임 블록
-7.4.5 명령어와 인자
7.5 어셈블리
-7.5.1 어셈블러 구조체
-7.5.2 어셈블러의 깊이 우선 탐색 알고리즘
-7.5.3 어셈블러 C API
-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.3 CPython 메모리 할당자
-9.3.1 연관된 소스 파일 목록
-9.3.2 중요한 용어들
-9.3.3 블록, 풀, 아레나
-9.3.4 블록 할당 API
-9.3.5 파이썬 디버그 API 사용하기
9.4 객체와 PyMem 메모리 할당자 도메인
-9.4.1 tracemalloc 모듈 사용하기
9.5 저수준 메모리 할당자 도메인
9.6 사용자 지정 도메인 할당자
9.7 사용자 지정 메모리 할당 검사기
-9.7.1 AddressSanitizer
-9.7.2 MemorySanitizer
-9.7.3 UndefinedBehaviorSanitizer
9.8 PyArean 메모리 아레나
-9.8.1 연관된 파일 목록
9.9 참조 카운팅
-9.9.1 파이썬에서 변수 생성 과정
-9.9.2 참조 카운트 증가시키기
-9.9.3 참조 카운트 감소시키기
-9.9.4 바이트코드 연산에서의 참조 카운팅
-9.9.5 CPython 참조 카운터의 장점
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.1 POSIX에서 프로세스 포크하기
-10.3.2 윈도우에서의 멀티프로세싱
-10.3.3 multiprocessing 패키지
-10.3.4 연관된 소스 파일 목록
-10.3.5 프로세스 스폰과 포크
-10.3.6 큐와 파이프를 사용해 데이터 교환하기
-10.3.7 프로세스 간의 공유 상태
-10.3.8 애플리케이션 예제
-10.3.9 멀티프로세싱 요약
10.4 멀티스레딩
-10.4.1 GIL
-10.4.2 연관된 소스 파일 목록
-10.4.3 파이썬 스레드 시작하기
-10.4.4 스레드 상태
-10.4.5 POSIX 스레드
-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.3 type 타입
-11.3.1 타입 슬록
-11.3.2 C 타입 사용하기
-11.3.3 타입 프로퍼티 딕셔너리
11.4 bool과 long 타입
-11.4.1 long 타입
-11.4.2 예제
11.5 유니코드 문자열 타입
-11.5.1 연관된 소스 파일 목록
-11.5.2 유니코드 코드 포인트 처리하기
-11.5.3 UTF-8 대 UTF-16
-11.5.4 확장(wide) 문자 타입
-11.5.5 바이트 순서 표식
-11.5.6 encodings 패키지
-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.2 macOS 또는 리눅스
14.3 macOS에서 LLDB 사용하기
-14.3.1 중단점 추가하기
-14.3.2 CPython 실행하기
-14.3.3 실행 중인 CPython 인터프리터에 연결하기
-14.3.4 중단점 사용하기
-14.3.5 cpython_lldb 확장
14.4 GDB 사용하기
-14.4.1 중단점 추가하기
-14.4.2 CPython 실행하기
-14.4.3 실행 중인 CPython 인터프리터에 연결하기
-14.4.4 중단점 사용하기
-14.4.5 pthon-gdb 확장
14.5 비주얼 스튜디오 디버거 사용하기
-14.5.1 중단점 추가하기
-14.5.2 디버거 실행하기
-14.5.3 중단점 사용하기
14.6 CLion 디버거 사용하기
-14.6.1 Make 애플리케이션 디버깅
-14.6.2 디버거 연결하기
-14.6.3 중단점 추가하기
-14.6.4 중단점 사용하기
14.7 요약

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

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

부록 A 파이썬 프로그래머를 위한 C 안내서

부록 B 성능 이슈를 통해 살펴본 CPython의 미래

작가정보

저자(글) 앤서니 쇼

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

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

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

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

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

작가의 말

[역자의 말]
컴퓨터 프로그래머로써 프로그래밍 언어 구현체라는 복잡한 소프트웨어의 내부 구현을 알아본다는 것은 꽤나 도전적인 일이다. 하지만 내부 구현에 대한 이해를 통해 프로그래밍 언어라는 도구를 다루는 데에 있어 한단계 더 높은 레벨에 도달할 수 있다. 더 높은 레벨에 도달하고 싶은 파이썬 개발자들에게 이 책이 여러분의 레벨업을 도와줄 친절한 동반자가 되어 줄 것이다. 파서와 컴파일러, 평가 루프를 넘어 메모리 관리와 코루틴에 이르기까지 CPython의 내부를 파헤쳐보자.

이 상품의 총서

Klover리뷰 (0)

Klover리뷰 안내
Klover(Kyobo-lover)는 교보를 애용해 주시는 고객님들이 남겨주신 평점과 감상을 바탕으로, 다양한 정보를 전달하는 교보문고의 리뷰 서비스입니다.
1. 리워드 안내
구매 후 90일 이내에 평점 작성 시 e교환권 100원을 적립해 드립니다.
  • - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다.
  • - 리워드는 한 상품에 최초 1회만 제공됩니다.
  • - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
2. 운영 원칙 안내
Klover리뷰를 통한 리뷰를 작성해 주셔서 감사합니다. 자유로운 의사 표현의 공간인 만큼 타인에 대한 배려를 부탁합니다. 일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
  • 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
  • 도서와 무관한 내용의 리뷰
  • 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
  • 의성어나 의태어 등 내용의 의미가 없는 리뷰

구매 후 리뷰 작성 시, e교환권 100원 적립

문장수집

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여 주는 교보문고의 새로운 서비스 입니다. 교보eBook 앱에서 도서 열람 후 문장 하이라이트 하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 ‘좋아요’ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보없이 삭제될 수 있습니다.
리워드 안내
  • 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
  • e교환권은 적립일로부터 180일 동안 사용 가능합니다.
  • 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다.
  • 리워드는 한 상품에 최초 1회만 제공됩니다.
  • sam 이용권 구매 상품/오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.

구매 후 문장수집 작성 시, e교환권 100원 적립

    교보eBook 첫 방문을 환영 합니다!

    신규가입 혜택 지급이 완료 되었습니다.

    바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
    지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!

    교보e캐시 1,000원
    TOP
    신간 알림 안내
    CPython 파헤치기 웹툰 신간 알림이 신청되었습니다.
    신간 알림 안내
    CPython 파헤치기 웹툰 신간 알림이 취소되었습니다.
    리뷰작성
    • 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
    • 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
    • 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
    감성 태그

    가장 와 닿는 하나의 키워드를 선택해주세요.

    사진 첨부(선택) 0 / 5

    총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.

    신고/차단

    신고 사유를 선택해주세요.
    신고 내용은 이용약관 및 정책에 의해 처리됩니다.

    허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
    있으니 유의하시어 신중하게 신고해주세요.


    이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.

    문장수집 작성

    구매 후 90일 이내 작성 시, e교환권 100원 적립

    eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.

    P.
    CPython 파헤치기
    저자 모두보기
    낭독자 모두보기
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 이용권입니다.
    차감하실 sam이용권을 선택하세요.
    sam 이용권 선택
    님이 보유하신 프리미엄 이용권입니다.
    선물하실 sam이용권을 선택하세요.
    결제완료
    e캐시 원 결제 계속 하시겠습니까?
    교보 e캐시 간편 결제
    sam 열람권 선물하기
    • 보유 권수 / 선물할 권수
      0권 / 1
    • 받는사람 이름
      받는사람 휴대전화
    • 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
    • 열람권은 1인당 1권씩 선물 가능합니다.
    • 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
    • 선물한 열람권의 등록유효기간은 14일 입니다.
      (상대방이 기한내에 등록하지 않을 경우 소멸됩니다.)
    • 무제한 이용권일 경우 열람권 선물이 불가합니다.
    이 상품의 총서 전체보기
    네이버 책을 통해서 교보eBook 첫 구매 시
    교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 네이버 책을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)
    구글북액션을 통해서 교보eBook
    첫 구매 시 교보e캐시 지급해 드립니다.
    교보e캐시 1,000원
    • 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
    • 한 ID당 최초 1회 지급 / sam 이용권 제외
    • 구글북액션을 통해 교보eBook 구매 이력이 없는 회원 대상
    • 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)