상세정보
미리보기
고성능 파이썬 (개정판)
- 저자
- 미샤 고렐릭,이안 오스발트 저/오현석 역
- 출판사
- 한빛미디어
- 출판일
- 2021-04-28
- 등록일
- 2021-11-08
- 파일포맷
- PDF
- 파일크기
- 8MB
- 공급사
- YES24
- 지원기기
-
PC
PHONE
TABLET
웹뷰어
프로그램 수동설치
뷰어프로그램 설치 안내
책소개
파이썬의 성능을 제대로 올려주는 코드 작성법 파이썬 코드가 제대로 동작하더라도 더 빠르게 실행되도록 해야 할 때가 있다. 이 책은 파이썬 3에 맞춰 내용을 보강한 개정판으로, 처리할 데이터 용량이 큰 프로그램의 병목현상을 찾고, 이를 해결해 성능을 향상하는 방법을 알려준다. 프로그램 설계 시 여러 선택 사항의 기반이 되는 자세한 설명 덕분에 파이썬 구현을 더 깊이 이해할 수 있다. 멀티 코어 아키텍처나 클러스터를 어떻게 활용할 수 있을까? 신뢰성을 잃지 않으면서 규모를 쉽게 확장하고 축소할 수 있는 시스템을 어떻게 구축할 수 있을까? 경험이 많은 파이썬 프로그래머라면 이 책을 통해 다양한 문제에 대한 구체적인 해결 방법을 배울 수 있고 소셜 미디어 분석, 프로덕션 수준의 머신러닝 분야에서 여러 기업이 겪은 무용담도 엿볼 수 있다.
저자소개
2033년 화성에 착륙한 최초의 인류이자 시간 여행에 기여한 공로로 2056년 노벨상을 수상했다. 그가 개발한 신기술이 악용되는 데 분노하여 2012년으로 돌아와서 시간 여행 연구를 그만두고 데이터와 사랑에 빠졌다. 그 후 머신러닝 응용 연구 실험실인 패스트 포워드 랩을 공동 창업하고, 도덕적 컴퓨팅에 관한 논문을 여러 편 저술하고, 윌킨스버그에 포괄적 공동체 공간인 커뮤니티 포지를 세우도록 도왔다. 2019년 도덕적 머신러닝 그룹인 프로버블 모델즈를 공동 설립하여 대화형 몰입형 연극인 프로젝트 아멜리아를 만들었다. 2020년 프랑스에서는 OCCRP의 기자들이 데이터에서 기삿거리를 찾도록 도왔다. 1857년 센트럴 파크에 그의 생을 기리는 기념비가 세워졌다.
목차
CHAPTER 1 고성능 파이썬 이해하기1.1 기본 컴퓨터 시스템1.2 기본 요소 조합하기1.3 파이썬을 쓰는 이유1.4 뛰어난 성과를 거두는 파이썬 프로그래머가 되는 방법CHAPTER 2 프로파일링으로 병목 지점 찾기2.1 효과적으로 프로파일하기2.2 줄리아 집합2.3 전체 줄리아 집합 계산하기2.4 시간을 측정하는 간단한 방법: print와 데커레이터2.5 유닉스 time 명령어를 이용한 간단한 시간 측정2.6 cProfile 모듈 사용하기2.7 SnakeViz로 cProfile 결과 시각화하기2.8 line_profiler로 한 줄씩 측정하기2.9 memory_profiler로 메모리 사용량 진단하기2.10 PySpy로 기존 프로세스 살펴보기2.11 바이트코드: 내부 작동2.12 최적화 중에 단위 테스트하기2.13 성공적인 코드 프로파일링 전략2.14 마치며CHAPTER 3 리스트와 튜플3.1 더 효율적인 탐색3.2 리스트와 튜플3.3 마치며CHAPTER 4 사전과 셋4.1 사전과 셋의 동작 원리4.2 사전과 네임스페이스4.3 마치며CHAPTER 5 이터레이터와 제너레이터5.1 이터레이터로 무한급수 표현하기5.2 제너레이터의 지연 계산5.3 마치며CHAPTER 6 행렬과 벡터 계산6.1 문제 소개6.2 파이썬의 리스트만으로 충분할까?6.3 메모리 단편화6.4 넘파이를 이용한 확산 방정식 해법6.5 numexpr: 제자리 연산을 더 빠르고 간편하게 쓰기6.6 경고: ‘최적화’ 검증(사이파이)6.7 행렬 최적화에서 얻은 교훈6.8 팬더스6.9 마치며CHAPTER 7 C 언어로 컴파일하기7.1 가능한 속도 개선의 종류7.2 JIT 대 AOT 컴파일러7.3 타입 정보가 실행 속도에 영향을 주는 이유7.4 C 컴파일러 사용하기7.5 줄리아 집합 예제 다시 보기7.6 사이썬7.7 pyximport7.8 사이썬과 넘파이7.9 Numba7.10 PyPy7.11 속도 향상 결과 정리7.12 각 기술의 사용 시점7.13 GPU7.14 외부 함수 인터페이스7.15 마치며CHAPTER 8 비동기 I/O8.1 비동기 프로그래밍 소개8.2 async/await의 동작 방식8.3 CPU 공유: I/O 부하8.4 마치며CHAPTER 9 multiprocessing 모듈9.1 multiprocessing 모듈 소개9.2 몬테 카를로 방식을 사용해 원주율 추정하기9.3 프로세스와 스레드를 사용해 원주율 추정하기9.4 소수 찾기9.5 프로세스 간 통신을 사용해 소수 검증하기9.6 multiprocessing과 넘파이 데이터 공유하기9.7 파일과 변수 접근 동기화하기9.8 마치며CHAPTER 10 클러스터와 작업 큐10.1 클러스터링의 이점10.2 클러스터링의 단점10.3 일반적인 클러스터 설계10.4 클러스터화한 해법을 시작하는 방법10.5 클러스터 사용 시 고통을 피하는 방법10.6 두 가지 클러스터링 솔루션10.7 강건한 프로덕션 클러스터링을 위한 NSQ10.8 살펴볼 만한 다른 클러스터링 도구들10.9 도커10.10 마치며CHAPTER 11 RAMM 덜 사용하기11.1 값비싼 원시 타입 객체11.2 컬렉션이 사용하는 RAM 이해하기11.3 바이트와 유니코드11.4 RAM에 많은 텍스트를 효율적으로 저장하기11.5 사이킷런의 FeatureHasher를 사용해 더 많은 텍스트 모델링하기11.6 DictVectorizer와 FeatureHasher11.7 사이파이의 희소 행렬11.8 RAM을 덜 사용하기 위한 팁11.9 확률적 자료구조CHAPTER 12 현장에서 얻은 교훈12.1 특성 엔진으로 피처 엔지니어링 파이프라인 흐름 만들기12.2 고성과 데이터 사이언스 팀12.3 Numba12.4 최적화 vs. 생각12.5 어댑티브 랩의 소셜 미디어 분석, 소마(2014)12.6 RadimRehurek.com의 딥러닝 플라이 만들기(2014)12.7 Lyst.com의 대규모 머신러닝(2014)12.8 스메시에서의 대규모 소셜 미디어 분석(2014)12.9 성공적인 웹과 데이터 처리 시스템을 위한 PyPy(2014)12.10 Lanyrd.com의 작업 큐(2014)