HOME > Detail View

Detail View

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

Material type
단행본
Personal Author
Shaw, Anthony 김성현, 역
Title Statement
CPython 파헤치기 : 따라 하면서 이해하는 파이썬 내부의 동작 원리 / 앤서니 쇼 지음 ; 김성현 옮김
Publication, Distribution, etc
서울 :   인사이트,   2022  
Physical Medium
xxiv, 339 p. : 삽화 ; 23 cm
Series Statement
프로그래밍 인사이트
Varied Title
CPython internals : your guide to the Python 3 interpreter
ISBN
9788966263677
General Note
색인수록  
부록: A. 파이썬 프로그래머를 위한 C 안내서, B. 성능 이슈를 통해 살펴본 CPython의 미래  
Subject Added Entry-Topical Term
Python (Computer program language)
000 00000cam c2200205 c 4500
001 000046129730
005 20221005085314
007 ta
008 221004s2022 ulka 001c kor
020 ▼a 9788966263677 ▼g 93000
035 ▼a (KERIS)BIB000016530566
040 ▼a 241026 ▼c 241026 ▼d 211009
041 1 ▼a kor ▼h eng
082 0 4 ▼a 005.133 ▼2 23
085 ▼a 005.133 ▼2 DDCK
090 ▼a 005.133 ▼b P999 2022z49
100 1 ▼a Shaw, Anthony
245 1 0 ▼a CPython 파헤치기 : ▼b 따라 하면서 이해하는 파이썬 내부의 동작 원리 / ▼d 앤서니 쇼 지음 ; ▼e 김성현 옮김
246 3 ▼a C파이썬 파헤치기
246 1 9 ▼a CPython internals : ▼b your guide to the Python 3 interpreter
260 ▼a 서울 : ▼b 인사이트, ▼c 2022
300 ▼a xxiv, 339 p. : ▼b 삽화 ; ▼c 23 cm
490 1 0 ▼a 프로그래밍 인사이트
500 ▼a 색인수록
500 ▼a 부록: A. 파이썬 프로그래머를 위한 C 안내서, B. 성능 이슈를 통해 살펴본 CPython의 미래
650 0 ▼a Python (Computer program language)
700 1 ▼a 김성현, ▼e
830 0 ▼a 프로그래밍 인사이트
900 1 0 ▼a 쇼, 앤서니, ▼e
945 ▼a ITMT

Holdings Information

No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.133 P999 2022z49 Accession No. 121260931 Availability In loan Due Date 2022-12-12 Make a Reservation Available for Reserve(1persons reqested this item) R Service M

Contents information

Book Introduction

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

인터프리터 레벨에서 살펴보는 파이선 내부 동작 원리

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

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


Information Provided By: : Aladin

Author Introduction

앤서니 쇼(지은이)

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

realpython.com 튜토리얼 팀(지은이)

짐 앤더슨(Jim Anderson) 오랫동안 다양한 언어로 프로그래밍을 해 왔다. 임베디드 시스템, 분산 빌드 시스템 구축, 해외 벤더 관리 등의 분야에서 일했다. 조애나 재블론스키(Joanna Jablonski) 리얼 파이썬의 편집 주간이다. 프로그래밍 언어 못지않게 사람들의 언어도 좋아한다. 퍼즐과 패턴, 성가신 디테일에 대한 사랑이 번역가의 길을 걷게 만들었다. 그녀가 파이썬이라는 새로운 언어와 사랑에 빠지는 것은 시간 문제였다. 2018년부터 리얼 파이썬에 합류해 파이썬 사용자들의 실력 향상을 돕고 있다. 제이콥 슈미트(Jacob Schmitt) 온·오프라인 학술 및 기술 관련 교육 자료 편집자로 오랫동안 일해 왔다. 2020년 리얼 파이썬에 합류해 여러 뛰어난 저자와 개발자가 쓴 튜토리얼과 글, 책을 편집하고 있다.

김성현(옮긴이)

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

나동희()

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

Information Provided By: : Aladin

Table of Contents

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의

New Arrivals Books in Related Fields