고성능 파이썬 프로그래밍 [벤치마킹, NumPy, Cython, 병렬처리 기술을 사용한]
- 원서명Python High Performance Programming: Boost the performance of your Python programs using advanced techniques (ISBN 9781783288458)
- 지은이가브리엘레 라나로(Gabriele Lanaro)
- 옮긴이이우현
- ISBN : 9788960778535
- 12,000원
- 2016년 04월 26일 펴냄 (절판)
- 페이퍼백 | 128쪽 | 188*235mm
- 시리즈 : acorn+PACKT
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
요약
이 책은 파이썬 프로그램을 최적화하는 다양한 방법을 소개한다. 간단한 입자 시뮬레이션을 단계적으로 작성하면서 코드를 벤치마킹 및 프로파일링해 성능을 정확히 분석하고, 비효율적인 코드 패턴을 찾아 Cython과 NumPy 코드로 대체해 프로그램 성능을 최적화하는 방법을 학습한다. multiprocessing 모듈과 IPython parallel 패키지 등을 사용해서 프로그램의 주요 연산을 병렬화해 실행 속도를 대폭 향상하는 방법도 소개한다. 파이썬 프로그래머라면 반드시 알아야 할 기본적인 파이썬 프로그램 최적화 개념과 방법을 다루는 책이다.
이 책에서 다루는 내용
■ 벤치마킹을 통한 프로그램 성능 측정
■ 파이썬 프로파일링 도구를 사용해 코드의 병목 지점 검출
■ 파이썬 루프를 NumPy로 대체해 코드 실행 속도 향상
■ C 언어 급의 성능을 끌어내기 위해 Cython 사용
■ 멀티코어 프로세서를 활용한 코드 작성
■ 애플리케이션 프로파일링, 최적화, 재작성
이 책의 대상 독자
이 책은 고성능 애플리케이션을 개발하는 중상급 파이썬 개발자를 위한 책이다. 대부분의 예제는 과학 연구 관련 애플리케이션에서 사용되는 코드로 빠른 수학 연산 처리가 필수인 과학자나 엔지니어에게 적합하다.
하지만 이 책에서 다루는 내용은 모든 분야에 적용될 수 있다. 기본 개념부터 상급 주제까지 다양한 내용을 다루기 때문에 대부분의 파이썬 개발자라면 누구에게나 도움이 될 것이다.
이 책의 구성
1장, ‘벤치마킹과 프로파일링’에서는 프로그램 내 최적화가 필요한 부분을 찾는 방법을 알아본다. 상황에 맞는 도구를 사용하고 프로파일링 결과를 분석 및 해석하는 방법을 학습한다.
2장, ‘NumPy를 사용한 빠른 배열 처리’에서는 NumPy 패키지 사용 방법을 설명한다. NumPy는 배열 연산을 빠르게 처리하는 파이썬 프레임워크다. 사용법이 쉬우며 간결한 API를 제공하고 효율적으로 배열 연산을 수행한다.
3장, ‘Cython’에서는 Cython 사용법을 소개한다. Cython은 파이썬과 C 언어 사이의 다리 역할을 하는 언어다. 파이썬의 상위 집합 언어며 파이썬 코드를 빠른 C 익스텐션으로 컴파일한다.
4장, ‘병렬처리’에서는 병렬 프로그래밍의 기본 개념을 살펴본다. 병렬과 직렬 프로그래밍의 차이를 설명하고 간단한 문제를 병렬 프로그램으로 작성해본다. multiprocessing과 IPython.parallel, cython.parallel을 사용해 멀티코어 프로세서를 활용하는 프로그램도 작성한다.
목차
목차
- 1장. 벤치마킹과 프로파일링
- 애플리케이션 디자인
- 테스트와 벤치마크 작성
- 벤치마크 실행 시간 측정
- cProfile을 사용하여 병목지점 찾기
- line_profiler를 사용한 라인 프로파일링
- 코드 최적화
- dis 모듈
- memory_profiler를 사용한 메모리 사용 프로파일링
- 파이썬 코드 튜닝 팁
- 요약
- 2장. NumPy를 사용한 빠른 배열 연산 수행
- NumPy
- 배열 생성
- 배열 접근
- 브로드캐스팅
- 수학 연산
- 노름 계산
- NumPy를 사용하여 입자 시뮬레이터 개선
- numexpr를 사용한 성능 개선
- 요약
- NumPy
- 3장. Cython
- Cython 확장 모듈 컴파일
- 정적 타이핑
- 변수
- 함수
- 클래스
- 코드 공유
- 배열 다루기
- C 배열과 포인터
- NumPy 배열
- 자료형이 지정된 메모리뷰
- Cython 입자 시뮬레이터
- Cython 프로파일링
- 요약
- 4장. 병렬처리
- 병렬 프로그래밍
- multiprocessing 모듈
- Process와 Pool 클래스
- 몬테 카를로 원주율
- 동기화와 잠금
- IPython parallel
- direct 인터페이스
- 작업 기반 인터페이스
- OpenMP를 사용한 병렬 Cython
- 요약