Top

고성능 파이썬 프로그래밍 [벤치마킹, 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을 사용해 멀티코어 프로세서를 활용하는 프로그램도 작성한다.

저자/역자 소개

지은이의 말

파이썬은 간결한 문법과 활발한 커뮤니티의 지원으로 인기를 끌고 있는 프로그래밍 언어다. 우수한 라이브러리 덕분에 여러 분야에서 사용된다. C와 C++, 포트란 같은 로우 레벨 언어는 성능 중심의 애플리케이션을 개발할 때 주로 사용된다. 하지만 로우 레벨 언어로 작성한 프로그램은 속도는 빠르나 개발과 유지보수가 어렵다.
파이썬은 복잡한 애플리케이션을 쉽고 빠르게 작성할 수 있는 언어다. C 언어와의 밀접한 관계 덕분에 동적 프로그래밍 언어 사용 시 발생하는 성능 저하를 피할 수 있다. 느린 코드는 빠른 C 익스텐션으로 대체하고, 그 외 부분은 파이썬 코드로 유지하여 성능을 높일 수 있다.
이 책은 프로그램의 성능 저하 원인을 찾고 개선하는 기본적인 방법부터 고급 기술까지 단계적으로 설명한다.
이 책에서 다루는 모든 내용은 예제와 함께 설명한다. 파이썬 프로그래밍에서 흔히 범하는 실수도 살펴본다. 이 책에서 사용된 도구들은 보편적이며 안정성이 검증되었다. 해당 분야에서 널리 사용되고 있으며 지속적으로 업데이트될 것이다.
기본부터 단계적으로 설명하기 때문에 첫 장부터 순서대로 읽을 것을 권장한다.
즐겁게 읽기 바란다.

지은이 소개

가브리엘레 라나로(Gabriele Lanaro)

브리티시컬럼비아 대학교(University of British Columbia) 화학과에서 분자 시뮬레이션 분야를 연구하는 박사과정생이다. 대규모 시뮬레이션의 화학 반응 분석을 위한 고성능 파이썬 코드를 주로 작성해왔다. 고성능 파이썬 시각화 프로그램인 Chemlab과 emacs 텍스트 에디터를 사용해 파이썬 코드를 쉽게 작성할 수 있는 emacsfor-python 익스텐션을 개발했다. 저자가 연구와 개인 프로젝트를 통해 터득한 과학 연구를 위한 파이썬 프로그래밍을 이 책에서 소개한다.

옮긴이의 말

컴퓨터 프로그래밍의 대중화는 더 쉽고 간결한 언어에 대한 기대와 활성화로 연결되었다. 그중 파이썬은 상대적으로 낮은 진입장벽과 쉽고 간결한 문법 덕분에 다양한 분야에서 사용된다. 간단한 스크립트부터 대규모 프로젝트까지 파이썬은 주 프로그래밍 언어로 성장했고 외부 라이브러리를 사용해 언어의 효율성과 실행 속도를 극대화하려는 많은 연구가 진행되고 있다. 파이썬의 가장 큰 장점은 훌륭한 외부 라이브러리들이 꾸준히 개발되고 있는 활발한 언어라는 점이다. 프로그래머는 사용성이 입증된 외부 패키지를 활용해 복잡한 알고리즘 개발에 할애하는 시간을 줄이고 효율적인 코드를 작성할 수 있다.

이 책은 외부 패키지를 사용해 파이썬 코드를 최적화하고 효율성을 높이는 몇 가지 핵심 방법을 소개한다. 기본적인 파이썬 문법 및 사용법을 숙지하고 외부 패키지 사용에 대한 개념을 이해하는 파이썬 프로그래머를 대상으로 한다. 간단한 파이썬 기반 프로그램을 단계적으로 작성하면서 문제점을 집어내고 Cython과 NumPy를 사용해 코드를 최적화한다. 또 프로그래밍 분야의 최대 난제이자 동시에 즐거움인 병렬처리의 개념을 소개하고 multiprocessing 모듈과 IPython Parallel 패키지 등을 사용해 파이썬 프로그램을 병렬화한다. 이 책에서 소개하는 최적화 기법은 거의 모든 파이썬 프로그램에 적용할 수 있는 보편적이며 유용한 기술이므로 반드시 숙지하기를 권유한다.

옮긴이 소개

이우현

위스콘신 메디슨 주립 대학교와 서울대학교에서 컴퓨터 공학 학사와 석사 학위를 취득했다. 데이터베이스에 관심이 많은 풀스택 개발자다. 『그들은 어떻게 최고의 정치학자가 되었나』(후마니타스, 2012) 번역에 참여했다.

목차

목차
  • 1장. 벤치마킹과 프로파일링
    • 애플리케이션 디자인
    • 테스트와 벤치마크 작성
      • 벤치마크 실행 시간 측정
    • cProfile을 사용하여 병목지점 찾기
    • line_profiler를 사용한 라인 프로파일링
    • 코드 최적화
    • dis 모듈
    • memory_profiler를 사용한 메모리 사용 프로파일링
    • 파이썬 코드 튜닝 팁
    • 요약

  • 2장. NumPy를 사용한 빠른 배열 연산 수행
    • NumPy
      • 배열 생성
      • 배열 접근
      • 브로드캐스팅
      • 수학 연산
      • 노름 계산
    • NumPy를 사용하여 입자 시뮬레이터 개선
    • numexpr를 사용한 성능 개선
    • 요약

  • 3장. Cython
    • Cython 확장 모듈 컴파일
    • 정적 타이핑
      • 변수
      • 함수
      • 클래스
    • 코드 공유
    • 배열 다루기
      • C 배열과 포인터
      • NumPy 배열
      • 자료형이 지정된 메모리뷰
    • Cython 입자 시뮬레이터
    • Cython 프로파일링
    • 요약

  • 4장. 병렬처리
    • 병렬 프로그래밍
    • multiprocessing 모듈
      • Process와 Pool 클래스
      • 몬테 카를로 원주율
      • 동기화와 잠금
    • IPython parallel
      • direct 인터페이스
      • 작업 기반 인터페이스
    • OpenMP를 사용한 병렬 Cython
    • 요약

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안