한빛출판네트워크

IT/모바일

고성능 파이썬(2판)

파이썬 성능 잠재력을 끌어내는 실용적인 개발 전략서

한빛미디어

번역서

판매중

고성능 파이썬(2판)
좋아요: 4
  • 저자 : 미샤 고렐릭 , 이안 오스발트
  • 역자 : 오현석
  • 출간일 : 2021-05-10
  • 페이지 : 528쪽
  • ISBN : 9791162244210
  • 물류코드 :10421
  • 구판정보 :이 도서는 <고성능 파이썬>의 개정판입니다.

합계 : 32,400

  • 파이썬의 성능을 제대로 올려주는 코드 작성법

     

    파이썬 코드가 제대로 동작하더라도 더 빠르게 실행되도록 해야 할 때가 있다. 이 책은 파이썬 3에 맞춰 내용을 보강한 개정판으로, 처리할 데이터 용량이 큰 프로그램의 병목현상을 찾고, 이를 해결해 성능을 향상하는 방법을 알려준다. 프로그램 설계 시 여러 선택 사항의 기반이 되는 자세한 설명 덕분에 파이썬 구현을 더 깊이 이해할 수 있다. 멀티 코어 아키텍처나 클러스터를 어떻게 활용할 수 있을까? 신뢰성을 잃지 않으면서 규모를 쉽게 확장하고 축소할 수 있는 시스템을 어떻게 구축할 수 있을까? 경험이 많은 파이썬 프로그래머라면 이 책을 통해 다양한 문제에 대한 구체적인 해결 방법을 배울 수 있고 소셜 미디어 분석, 프로덕션 수준의 머신러닝 분야에서 여러 기업이 겪은 무용담도 엿볼 수 있다.

     

     

    대상 독자

    파이썬을 충분히 사용해보았고 특정 부분이 왜 느린지 생각해본 적이 있으며, 이를 위한 해법으로 거론되는 사이썬, 넘파이, PyPy 같은 기술을 들어본 독자가 대상이다. 또한 다른 언어로 프로그래밍해본 경험이 있어서 성능을 개선하는 방법이 여러 가지임을 아는 독자를 대상으로 한다. 또한 데이터 이동 문제를 포함하여 손쉽게 성능을 높일 수 있는 JIT 컴파일러(예컨대 PyPy)와 비동기 I/O를 사용하는 방법 등 웹 개발자가 직면할 수 있는 문제도 다룬다.

    이 책은 중고급 파이썬 프로그래머를 위한 책이다. 의욕이 넘치는 초보 파이썬 프로그래머도 잘 따라올 수 있겠지만, 이 책을 읽기 전에 파이썬 기초를 먼저 다지기를 추천한다.

     

     

    주요 내용 

    • 넘파이, 사이썬, 프로파일러 더 잘 이해하기
    • 파이썬이 하부의 컴퓨터 아키텍처 추상화 방법 배우기
    • 프로파일링을 통해 CPU 소비 시간이나 메모리 사용량에서 병목 찾기
    • 적절한 데이터 구조를 선택해 효율적인 프로그램 작성하기
    • 행렬과 벡터 계산의 속도 높이기
    • 파이썬을 기계어로 번역하는 도구 사용하기
    • 다양한 입출력과 계산 연산을 동시 실행하고 관리하기
    • 다중 프로세싱 코드를 지역, 원격 클러스터에서 실행하도록 변환하기
    • 도커 등의 도구를 사용해 빠르게 프로그램 배치하기   

     

    추천사

     

    우리는 효율적이고, 이해하기 쉽고, 성능 좋은 시스템을 만들고 싶어 한다. 이 책은 세 가지 모두를 달성하려는 사람을 위한 안내서로, 여러분이 프로그래밍 실무를 대하는 방식을 바꿔줄 것이다.

  • [저자] 미샤 고렐릭

    2033년 화성에 착륙한 최초의 인류이자 시간 여행에 기여한 공로로 2056년 노벨상을 수상했다. 그가 개발한 신기술이 악용되는 데 분노하여 2012년으로 돌아와서 시간 여행 연구를 그만두고 데이터와 사랑에 빠졌다. 그 후 머신러닝 응용 연구 실험실인 패스트 포워드 랩을 공동 창업하고, 도덕적 컴퓨팅에 관한 논문을 여러 편 저술하고, 윌킨스버그에 포괄적 공동체 공간인 커뮤니티 포지를 세우도록 도왔다. 2019년 도덕적 머신러닝 그룹인 프로버블 모델즈를 공동 설립하여 대화형 몰입형 연극인 프로젝트 아멜리아를 만들었다. 2020년 프랑스에서는 OCCRP의 기자들이 데이터에서 기삿거리를 찾도록 도왔다. 1857년 센트럴 파크에 그의 생을 기리는 기념비가 세워졌다.

     

    [저자] 이안 오스발트

    수석 데이터 과학자이자 코치이다. 700명 이상이 참석하는 연례 콘퍼런스인 PyData 런던과 회원이 1만 명 이상인 월례 미팅을 공동 설립했다. 런던의 모 컨설팅 데이터 과학을 운영하고, 국제 콘퍼런스에서 강사로 활동하며 종종 기조연설을 한다. 수석 데이터 과학자이자 트레이너, 팀 코치로 17년 이상 경력을 쌓았다. 취미로는 에너지 넘치는 스프링어 스파니엘과 함께 산책을 하고, 코니시 해변에서 서핑을 하며, 커피를 즐긴다. ianozsvald.com에서 그의 지난 강의와 글을 찾아볼 수 있다.

     

    [역자] 오현석

    비사이드소프트(BSIDESOFT) 이사로 일하면서 매일 고객의 요청에 따라 코드를 만들고 있는 현업 개발자다. 어릴 때 처음 접한 컴퓨터에 매혹된 후 경기과학고등학교, KAIST 전산학 학사와 프로그래밍 언어 전공 석사를 취득하며 계속 컴퓨터를 사용해왔다. 직장에서는 주로 코틀린이나 자바를 사용한 서버 프로그래밍을 하고, 주말이나 빈 시간에는 번역을 하거나 공부하면서 즐거움을 찾는다. 시간이 아주 많이 남을 때는 시뮬레이션 게임을 하면서 머리를 식히며, 어떻게 하면 막둥이를 프로그래밍의 세계로 끌어들일 수 있을지 고민 중인 아빠이기도 하다. 

     

  • 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 pyximport

    7.8 사이썬과 넘파이

    7.9 Numba

    7.10 PyPy

    7.11 속도 향상 결과 정리

    7.12 각 기술의 사용 시점

    7.13 GPU

    7.14 외부 함수 인터페이스

    7.15 마치며

     

    CHAPTER 8 비동기 I/O

    8.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 강건한 프로덕션 클러스터링을 위한 NSQ

    10.8 살펴볼 만한 다른 클러스터링 도구들

    10.9 도커

    10.10 마치며

     

    CHAPTER 11 RAMM 덜 사용하기

    11.1 값비싼 원시 타입 객체

    11.2 컬렉션이 사용하는 RAM 이해하기

    11.3 바이트와 유니코드

    11.4 RAM에 많은 텍스트를 효율적으로 저장하기

    11.5 사이킷런의 FeatureHasher를 사용해 더 많은 텍스트 모델링하기

    11.6 DictVectorizer와 FeatureHasher

    11.7 사이파이의 희소 행렬

    11.8 RAM을 덜 사용하기 위한 팁

    11.9 확률적 자료구조

     

    CHAPTER 12 현장에서 얻은 교훈

    12.1 특성 엔진으로 피처 엔지니어링 파이프라인 흐름 만들기

    12.2 고성과 데이터 사이언스 팀

    12.3 Numba

    12.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)

  • 파이썬 성능을 시원하게 올리는 사이다 코드 공개

     

    누군가는 순차 프로세스를 빠르게 실행해야 하고, 다른 누군가는 멀티 코어 아키텍처, 클러스터, GPU를 제대로 활용하지 못해 애를 먹는다. 또 다른 누군가는 신뢰성을 잃지 않으면서도 주어진 예산 안에서 필요한 만큼의 프로세스를 사용할 수 있는 확장 가능한 시스템을 원한다. 어떤 사람은 코딩 실력이 부족함을 느끼기도 한다. 종종 다른 언어에서 차용한 기법이 예제에서 본 것만큼 자연스럽지 않기도 하다.

    이 책은 이러한 파이썬의 성능 향상에 필요한 기법과 해결책을 다룬다. 성능상의 병목을 인지하여 더 빠르고 확장성이 뛰어난 해법을 구하는 실용적인 지침을 제공한다. 독자보다 먼저 문제에 직면했던 사람들이 고군분투했던 이야기를 통해 같은 문제로 힘 빼지 않도록 도와준다.

     

    ▶ 파이썬 3 대응!

    ▶ 사전 지식

    - 파이썬 중급

    ▶ 먼저 보면 좋은 책

    - 『혼자 공부하는 파이썬』

    - 『처음 시작하는 파이썬(2판)』

    - 『나의 첫 파이썬(2판)』

    - 『파이썬 정복』

    • 파이썬은 다른 프로그래밍 언어에 비해 비교적 초기 접근이 쉬운 언어라 최근 초중고생등 초심자들 에게도 인기가 많고 빅데이터를 다루는데도 사용자 커뮤니티가 많아 전문가 집단에게도 인기가 많은 언어이다.


       


      본 책 '고성능 파이썬(2판)' 은 초급자를 위한 책은 아니고 제목과 같이 큰 데이터를 빠른 시간에 처리하기 위한 중급 이상의 개발자를 위한 책이라고 하겠다.


       


      책의 내용을 살펴보면 기본적으로 C(C++ 또는 자바)언어에 관한 이야기를 다룬 챕터가 있으며(chapter7. C언어로 컴파일하기),


       


      컴퓨터의 저수준 동작방식, 리스트와 튜플, 사전과 셋, 이터레이터, 행렬과 넘파이, 컴파일과 JIT 컴퓨팅, 동시성, 다중처리, 클러스터 컴퓨팅, 메모리 아껴쓰기, 현업에서 얻은 교훈등을 다루는데,


       


      이는 기본적으로 컴퓨터과학(공학)과 커리큘럼 학습 내용(컴파일, 자료구조, 컴퓨터 구조론, 알고리즘, 운영체제등)을 사전 배경 지식으로 알고 있어야 이해가 쉬운 부분이 있어 초보자들이 보기에는 약간의 장벽이 있긴하다.


       


      하지만 언제나 쉬운것만 배우게 되면 초보자에 수준에서 맴돌고 우물안 개구리고 새로운 세상을 볼 수 없는것은 인지상정 이므로 이 책을 책장에 오랜시간 두고 여유롭게 읽다 어렵다고 생각되는 부분이 나오면,


       


      위에서 언급한 컴퓨터 과학 관련 도서를 구해 조금씩 공부하며 각 챕터를 정복해 나가는 것도 나쁘지 않아 보인다.


       



      천리길도 한걸음 이라고 하는데 프로그래밍에는 왕도가 없어 보이며, 코드를 눈으로 보는 것이 아니라 일신우일신(日新又日新) 코드를 직접 손으로 쳐가면서 애기가 걸음마 하듯 나아가면 어느덧 정상에 올라가 있지 않을까 싶다.


       



      <이 리뷰는 한빛미디어 도서협찬을 받아 작성하였습니다>


    • 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

       




       


       

      외관은 위와 같은 표지의 책이다.

       

      책에 대한 평을 하기 전에...

      대학에서 컴퓨터를 전공하고 J2ME, KVM이 존재하던 시절에 모바일 게임 개발을 시작으로 이런 저런 무선 서비스 개발 및 JAVA기반 서버 프로그램과 스마트폰 앱 개발 등을 해 왔고 지금도 서버쪽 일을 계속 하고 있으며, 대학에서 작년까지 7년간 강의도 해 왔었다.(그 덕에 리뷰어 선정된듯...)

       

      개인적인 배경을 밝히는 이유는 이 책이 무척이나 마음에 들고 좋은 얘기만 주절주절 할거 같은데 학생이나 초급자가 보기엔 좀 어려운 책이라서다.

       

      대학에서 파이썬도 강의를 했었는데 이 경우는 대상이 컴퓨터 전공이 아닌 타 학과 학생들을 대상으로 하는 경우였다.

      처음 접해서 배우기 쉽고 라이브러리가 워낙 잘 되어 있기 때문에 처음 프로그래밍을 배우는 사람들에게 적합하기 때문이라고 개인적으로 생각한다.

       

      하지만 이 책은 그런 파이썬에서 그 이상에 대한 이야기를 하고 있다.

      파이썬도 C로 만들어 졌고 CPU와 메모리를 통해서 동작을 하고...

      결국 스크립트 언어이지만 컴퓨터라는 하드웨어를 이해하고 그 위에서 동작하는 소프트웨어에 대해서 이해하고 이를 바탕으로 더 나은 성능의 프로그램을 만들어 내는 것에 대한 이야기를 하는 책이다.

       

      그래서 난 이책이 무척 마음에 든다.

      이런 저런 핑계로, 아니면 업무를 바쁘게 하다보니 언제부턴가 구현에 급급한 상황이 많았는데(솔직히 게을러서...) 책 내용을 훑어보며 개발에 불타오르던 시절을 떠올리게 되었다.

       

      이런저런 핑계로 책에 대한 리뷰는 이렇게 간단하게 적...

       

      책에서 마음에 들지 않는 부분이 있다.

      너무 흑백이다. 차트나 그래프, 그림을 보면 원래는 컬러가 아니었을까 싶다.

      흑백에다가 회색조로 구분도 잘 안되어서 차트나 그래프, 그림을 이해하거나 알아볼 수 없는 경우가 많다.

       

      그 외에는 마음에 든다.

       

      진지한 파이썬 이후로 재미있게 볼만한 책인것 같다.

       

      좋은 그리고 마음에 드는 책으로 리뷰를 할 수 있게 해준 한빛 출판사에 감사의 말을 전한다.




  • 내용이 없습니다.
  • 내용이 없습니다.
닫기

해당 상품을 장바구니에 담았습니다.
장바구니로 이동하시겠습니까?