Top

IPython 6.0 [IPython을 최대한 활용하기 위한 인터랙티브 컴퓨팅의 고급 개념 이해]

  • 원서명Mastering IPython 4.0: Get to grips with the advanced concepts of interactive computing to make the most out of IPython (ISBN 9781785888410)
  • 지은이토마스 비터만(Thomas Bitterman)
  • 옮긴이심지현
  • ISBN : 9791161751276
  • 30,000원
  • 2018년 03월 09일 펴냄
  • 페이퍼백 | 432쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

IPython은 고성능 병렬 컴퓨팅을 위해 고안된 파이썬 기반 언어다. 이 책은 IPython의 병렬 아키텍처와 유연한 병렬 프로그래밍 모델, 제로MQ와 MPI라는 메시징 시스템을 상세히 설명하며 IPython이 고성능 병렬 컴퓨팅에 적합한 이유를 논한다. 또한 IPython의 명령행과 내부 라이브러리, 데이터 시각화를 지원하는 여러 도구의 사용법을 일관된 예제와 함께 제공해 실제 개발 사례에 적용할 수 있도록 돕는다. 끝으로 테스트와 설명서라는 개발 단계까지 어떻게 지원하는지 알아본다.

이 책에서 다루는 내용

■ 고성능 컴퓨팅에 IPython을 사용하는 개발 기술
■ IPython 인터랙티브 쉘의 이해
■ 제로MQ와 MPI를 사용한 메시지 전송
■ R, 줄리아, 자바스크립트와 같은 외부 도구와 IPython의 통합
■ 데이터 시각화
■ 데이터 테스트, 설명서 작성 방법
■ 주피터 노트북 시스템의 최신 개발 이해

이 책의 대상 독자

IPython을 최대한 활용해 인터랙티브 컴퓨팅을 쉽게 이용하며 IPython으로 고급 과학 컴퓨팅을 수행하려는 IPython 개발자를 위한 책이다. IPython 6.0의 대화형 특징과 병렬 컴퓨팅 측면, 그 외 외부 도구와의 통합, 테스트, 설명서 같은 개념을 함께 배우려는 사용자에게 이상적이다.

저자/역자 소개

지은이의 말

고성능 병렬 환경에서 활약 중인 IPython 6.0의 세계에 온 걸 환영한다. 지금까지는 파이썬이 관련 분야를 선도해왔으며, 이러한 강점을 기반으로 IPython이 만들어졌다.
고성능 컴퓨팅(HPC, High-performance computing)에는 다른 대다수 컴퓨팅 영역과 구별되는 많은 특징이 있다. 고성능 컴퓨팅의 특징과 IPython이 어떻게 판도를 바꾸는 기술이 될 수 있을지 간단히 요약한다.
우선 IPython 명령행을 설명한다. 주피터를 IPython 프로젝트로부터 분리했으므로 명령행은 개발자가 IPython 언어와 소통하는 기본 수단이다. 두 장에 걸쳐 설명할 만큼 중요한 주제다. 1장은 기초 명령어에 중점을 둬 IPython의 명령어 수행 방법을 설명한다. 2장은 좀 더 고급 명령어를 다루면서 명령행이 반드시 제공해야 하는 기능을 이해시킨다.
이어서 병렬 프로그래밍의 세부적인 내용을 설명한다. IPython에서 병렬 기능은 하나의 패키지로서 IPython으로 병렬 컴퓨팅을 수행하는 데 필요한 수많은 기능을 포함한다. 이 패키지는 유연한 병렬 프로그래밍 모델을 지원하며, 다중 병렬 아키텍처를 활용하는 데 매우 중요하다.
서로 다른 프로세서에서 병렬로 실행되는 프로그램들은 별도의 주소 공간이 있다 해도 종종 정보를 교환해야 한다. 이때 메시지 전송을 이용한다. 메시징 시스템인 제로MQ와 MPI를 소개하고, 두 시스템이 기존 프로그램에서 어떻게 쓰이며 IPython과 어떻게 상호작용하는지 다룬다.
사용자의 생산성을 강화할 수 있는 라이브러리도 자세히 알아본다. IPython 내에 들어있는 라이브러리와 외부 도구에서 제공하는 라이브러리를 포괄한다. 이 책이 다루는 많은 도구뿐만 아니라 다른 책에서도 계속 여러 도구를 설명하고 있지만, 병렬과 고성능 컴퓨팅 프로젝트에 적용할 만한 도구는 많지 않다.
IPython의 중요한 기능은 데이터셋과 결과의 시각화 지원이다. 언어에 내장된 기능과 외부 도구를 통한 지원을 포함해 IPython의 폭넓은 기능을 설명한다.
IPython에 대한 설명은 테스트와 설명서를 다루며 마무리한다. 종종 도외시되는 주제지만, 실패한 코드와 전문 코드를 분리해낼 때 중요하다. IPython이 2개발 단계를 어떻게 지원하는지 살펴본다. 끝으로 병렬 컴퓨팅 분야의 흐름을 논한다. 모든 기술이 늦어도 한 해 걸러 한 번씩은 변하는 점이 프로그래밍의 재미 중 하나다. 미래에 일어날 일을 예상해보자.

지은이 소개

토마스 비터만(Thomas Bitterman)

루이지애나 주립대학교에서 박사 학위를 받고 현재 비텐베르크 대학의 조교수로 재직 중이다. 수년의 경력이 있고, 가장 최근에는 오하이오 슈퍼컴퓨터 센터에서 일했다. 전자 상거래, 기업 메시징, 무선 네트워크, 슈퍼컴퓨팅, 학계에 걸쳐 다양한 경험을 갖고 있다. 여가 시간에는 팩트출판사와 오라일리의 책을 저술하며 프로그래밍 감각을 잃지 않으려 노력한다.

옮긴이의 말

오늘날은 바야흐로 빅데이터의 세상이다. 빅데이터가 일상에 깊숙이 스며들면서 대용량 분산 처리를 넘어 고성능 컴퓨팅과 병렬 컴퓨팅의 필요성도 자연히 커졌다. 과거 포트란이 주도하던 이 분야에 새롭게 등장한 강자가 바로 IPython이다.
IPython은 Interactive Python의 약자로 기존의 배치 처리 방식이 아닌 시스템과의 인터랙션을 강조한 고성능 컴퓨팅 언어다. IPython의 개발자인 페르난도 페레즈는 전통적인 파이썬에서 벗어나 명령행에서 인터랙티브하게 수행될 수 있는 노트북 형식의 인터페이스를 만들고자 했다. 그 결과 파이썬의 여러 강점과 객체지향 패러다임을 포함하는 IPython이 탄생했다.
이 책은 고성능 병렬 컴퓨팅의 관점에서 IPython이 갖는 고유한 특징을 면밀히 소개하고, 실제 프로젝트에 적용할 수 있도록 다양한 예제로 패키지와 라이브러리를 설명한다. 독자가 이해해야 할 핵심은 크게 세 가지다.
첫째, 고성능 병렬 컴퓨팅을 가능케 하는 IPython의 내부 병렬 아키텍처와 메시징 시스템이다. IPython의 병렬 아키텍처는 기본적으로 엔진, 컨트롤러, 허브, 스케줄러라는 네 개의 컴포넌트로 구성되는데, 실제 병렬 잡을 수행하는 엔진과 이를 관리하는 컨트롤러 (허브와 스케줄러를 포함)가 어떻게 동작하는지 보여준다. 또한 ipyparallel 라이브러리로 다양한 유형의 병렬 구조를 지원하는 방식도 설명한다. 더불어 병렬 프로세스 간 커뮤니케이션을 지원하는 대표적인 메시징 시스템인 제로MQ와 MPI도 살펴본다. 특히 제로MQ가 IPython의 내부 메시징 프레임워크로서 어떻게 쓰이고 있는지 예제와 함께 알아본다.
둘째, 앞서 설명한 병렬 아키텍처를 쉽고 효율적으로 다룰 수 있는 IPython의 내부 라이브러리를 알 수 있다. IPython이 제공하는 API를 사용하면 병렬 계산 결과에 접근하고 조작하거나 성능 프로파일링 등을 수행할 수 있다. 이 중 비동기식 호출을 가능케 하는 AsyncResult, 잡을 제어하는 Client 클래스, 여러 엔진을 하나의 엔티티처럼 다룰 수 있는 DirectView, 스케줄러를 사용해 블로킹 없이 다수의 잡을 실행하는 LoadBalancedView를 중점적으로 살펴본다.
셋째, IPython을 더욱 풍부하게 사용할 수 있는 외부 도구와 언어를 다룬다. 이 책은 두 가지 목적으로 나눠 설명하는데, 먼저 복잡한 컴퓨팅을 지원하는 외부 언어와의 통합이다. 통계에 적합한 R, 수 계산에 특화된 옥타브, 빅데이터 분석에 유용한 하이 등을 논한다. 다음은 데이터 시각화를 위한 외부 도구와의 통합이다. 파이썬 기반의 2D 그래프 라이브러리인 matplotlib, 파이썬 대화형 시각화 라이브러리인 보케, 그리고 R 등을 예제 코드와 함께 다룬다.
이 밖에도 모든 개발 프로젝트의 기본인 테스트와 설명서도 빼놓지 않는다.
과학과 공학 분야에 걸쳐 고성능 컴퓨팅 자원을 반드시 필요로 하는 문제들이 점차 늘어나고 있다. 또한 높은 성능과 확장을 위해 클라우드와 같은 병렬 컴퓨팅에 점점 더 의존하고 있다. IPython은 병렬 컴퓨팅을 위한 새로운 아키텍처와 병렬 장비로의 강력하고 유연한 인터페이스를 제공한다. 이 책을 통해 고성능 병렬 컴퓨팅에 IPython을 적극적으로 활용해보고 IPython의 가치를 스스로 평가해보길 바란다.

옮긴이 소개

심지현

이화여대 컴퓨터공학과를 졸업하고, 카이스트(KAIST) 대학원 전산과 에서 데이터베이스 전공으로 석사 학위를 취득했다. DB 외에 온톨로지, 개인화 검색 등을 연구했으며, 졸업 후 네이버에서 검색 서버 설계 및 개발 실무 경험을 쌓다가 현재는 검색 연구실에서 검색 모델링과 추천 시스템 관련 연구를 진행 중이다.

목차

목차
  • 1장. IPython을 사용한 고성능 컴퓨팅
    • 속도의 필요성
    • 포트란으로 해결 - 포트란이 다룬 문제
      • 가독성
      • 이식성
      • 효율성
      • 컴퓨팅 환경
    • IPython과 포트란 중 선택
      • 포트란
      • IPython
        • 객체지향
        • 채택의 편이성
      • 대중성 - 포트란 대 IPython
        • 유용한 라이브러리
      • 소프트웨어 개발(과 유지보수) 비용
        • 요구사항과 명세 얻기
        • 개발
        • 실행
        • 테스트와 유지보수
    • 대안
      • 교차 언어 개발
      • 프로토타이핑과 탐색 개발
    • 사례 - 고속 푸리에 변환
      • 고속 푸리에 변환
        • 포트란
        • Python
    • 성능 관점
    • 소프트웨어 공학 관점
      • 복잡도 기반 측정
      • 크기 기반 측정
    • 현황
  • 고성능 컴퓨팅
    • 고성능 컴퓨팅 학습 곡선
    • 넘쳐나는 병렬화의 기회(아마존의 컴퓨터는 사용자의 컴퓨터보다 크다)
    • 고성능 컴퓨팅과 병렬화
    • 클라우드와 고성능 컴퓨팅
  • 병렬
    • 용어
    • 병렬 프로그래밍 예제
      • 직렬 프로그램
      • 병렬 동등
      • 논의
  • 요약
  • 2장. 고급 셸 주제
    • IPython이란?
    • IPython 설치
    • 통합 배포
      • Mastering
      • 콘다로 패키지 관리
    • 캐노피 패키지 매니저
    • 노트북의 변화터미널에서 시작하기
    • 파이썬을 뛰어넘는 IPython
      • 셸 통합
      • 히스토리
    • 매직 명령어
      • 맞춤형 매직 명령어 생성
    • 싸이썬
    • IPython 설정
    • 디버깅
      • 사후 분석 디버깅
      • 구동 시 디버깅
      • 디버거 명령어
    • 읽기 - 평가 - 출력 루프와 IPython 아키텍처
    • 대안 개발 환경
      • 스파이더
      • 캐노피
      • PyDev
      • 그 밖의 환경
    • 요약

  • 3장. IPython을 사용한 병렬 컴퓨팅
    • 직렬 프로세스
      • 프로그램 카운터와 주소 공간
      • 배치 시스템
      • 멀티태스킹과 선점
      • 시분할
    • 스레딩
      • 파이썬으로 스레딩
      • 예제
      • 스레딩의 한계
      • 전역 인터프리터 락
        • 인터프리터가 하는 일
        • CPython
        • 멀티코어 장비
        • 전역 인터프리터 락 제거
    • 다수의 프로세서 사용
    • IPython 병렬 아키텍처
      • 개요
      • 컴포넌트
        • IPython 엔진
        • IPython 컨트롤러
        • IPython 허브
        • IPython 스케줄러
    • ipyparallel 시작하기
      • ipcluster
      • Hello world
      • map_sync 사용하기
      • 비동기 호출
      • 동기식 임포트
    • 병렬 매직 명령어
      • %px
      • %%px
      • %pxresult
      • %pxconfig
      • %autopx
    • 병렬화 유형
      • SIMD
      • SPMD
        • ipcluster와 mpiexec/mpirun
        • ipcluster와 PBS
        • 엔진 구동
        • 컨트롤러 구동
        • 스크립트 사용하기
      • 맵리듀스
        • 스캐터와 개더
        • 더 정교한 방법
      • MIMD
      • MPMD
      • 태스크 파밍과 부하 분산
        • @parallel 함수 장식자
    • 데이터 병렬화
      • 데이터 종속성이 없는 경우
      • 외부 데이터 종속성
    • 애플리케이션 조종
      • 디버깅
      • 사전 사후 분석 디버깅
      • 안전한 종료
    • 요약

  • 4장. 제로MQ와 MPI를 사용한 메시징
    • 저장소 계층 구조
      • 주소 공간
      • 데이터 지역성
    • 제로MQ
      • 예제 제로MQ 프로그램
        • 서버
        • 클라이언트
      • 제로MQ의 메시징 패턴
        • 양방향
        • 클라이언트와 서버
        • 게시와 구독
        • 푸시와 풀
      • 제로MQ의 주요 특징
      • 제로MQ 사용 시 이슈
        • 시작과 종료
        • 프로세스 찾기
    • MPI
      • Hello World
      • 순위와 역할
      • 점대점 커뮤니케이션
      • 브로드캐스팅
      • 리듀스
      • 논의
        • 설정 변경
        • 작업 분할
        • 작업 분배
      • 프로세스 제어
        • 마스터
        • 워커
    • 제로MQ와 IPython
      • 제로MQ 소켓 타입
      • IPython 컴포넌트
        • 클라이언트
        • 엔진(들)
        • 컨트롤러
        • 허브
        • 스케줄러
        • 연결 그림
      • 메시징 유스케이스
        • 등록
        • 심장 박동
        • IOPub
    • 요약

  • 5장. 툴킷 - IPython API
    • 성능 프로파일링
      • utils.timing
      • %%timeit 사용
      • %%prun 사용
    • AsyncResult 클래스
      • multiprocessing.pool.Pool
        • 블로킹 메서드
        • 논블로킹 메서드
        • 결과 획득
        • 다양한 메서드를 사용한 예제 프로그램
      • mp.pool.AsyncResult
        • 결과 획득
        • 다양한 메서드를 사용한 예제 프로그램
      • AsyncResultSet 메타데이터
        • 메타데이터 키
        • 그 밖의 메타데이터
    • Client 클래스
      • 속성
      • 메서드
    • View 클래스
      • View 속성
      • 파이썬 함수 호출
        • 동기식 호출
        • 비동기식 호출
        • 설정 호출
        • 잡 제어
    • DirectView
      • 데이터 이동
      • 임포트
      • 논의
    • LoadBalancedView
      • 데이터 이동
      • 임포트
    • 요약

  • 6장. IPython과 외부 도구 통합
    • R
      • rpy2 모듈/확장
        • rpy2 설치
      • Rmagic 사용
        • %R 매직
        • %%R 매직
        • 푸시와 풀
      • 그래픽
      • rpy2.robjects 사용
        • 기초
        • 문자열을 R로 인터프리팅
    • 옥타브
      • oct2py 모듈과 확장
        • oct2py 설치
      • 옥타브 매직 사용
        • %octave 매직
      • %%octave 매직
      • 푸시와 풀
      • 그래픽
      • 옥타브 모듈 사용
        • 푸시와 풀
        • 옥타브 코드 실행
    • 하이
      • hymagic 모듈과 학장
        • hymagic 설치
      • hymagic 사용
        • %hylang 매직
        • %%hylang 매직
      • 하이 간단 소개
        • Hello world!
        • 괄호에 익숙해지기
        • 뜬금없는 위치에서의 산술 연산
        • 연쇄적 연산은 어디서든 가능하다
        • 하이의 제어 구조
        • 파이썬 호출
    • 요약
  • 7장. 백문이불여일견 – 시각화
    • Matplotlib
      • matplotlib 시작
      • 초기 그래프
      • 그래프 수정
      • 대화형 제어
    • 보케
      • 보케 시작하기
      • 초기 그래프
      • 그래프 수정
        • 그래프 맞춤화
    • 대화형 플롯
      • 대화형 플롯 예제
    • R
      • ggplot2 설치와 판다스
        • 데이터 프레임 사용
      • 초기 그래프
        • 그래프 수정
        • 다른 관점
    • 파이썬-nvd3
      • 파이썬-nvd3 시작하기
      • 초기 그래프
      • 여러 도구를 함께 사용하기.
      • 다른 종류의 플롯
    • 요약

  • 8장. 데모로는 부족해! – 테스트
    • 단위 테스트
      • 간단한 소개
        • 어서션
        • 환경 이슈
        • 테스트하기 쉽도록 테스트 작성
    • unittest
      • 주요 개념
      • setUp과 tearDown을 사용한 테스트
        • 일회성 setUp과 tearDown
      • 장식자
    • pytest
      • 설치
      • 후방 호환성
      • 테스트 찾기
      • 테스트 파일 구성
      • 어서션
      • setUp과 tearDown을 사용한 테스트
        • 전통적인 xUnit방식
      • 픽스처 사용
        • 누락과 실패
      • 몽키패치
    • nose2
      • 설치
      • 후방 호환성
      • 테스트 찾기
        • 각 테스트 실행
      • 어서션과 설정, 해제
        • xUnit방식의 수정
      • 장식자 사용
      • 플러그인
        • junitxml 플러그인으로 XML 생성
    • 요약

  • 9장. 설명서
    • 한 줄 주석
      • 한 줄 주석 사용하기
      • 함수 표기
        • 문법
        • 시맨틱
      • 타입 힌트
        • 문법
        • 시맨틱
    • 문서화 문자열
      • 예제
        • 문서화 문자열 상속
      • 추천 요소
        • 한 행 문서화 문자열
        • 문법
        • 다수 행 문서화 문자열
      • 예제
    • RST(reStructuredText)
      • 역사와 목표
      • 고객
      • 해결안
      • 개요
        • 문단
        • 텍스트 방식
        • 글머리
        • 하이퍼링크
        • 섹션
    • Docutils
      • 설치
      • 용법
      • 소스 파일 명세
    • 스핑크스
      • 설치와 시작
      • 소스 파일 명시
    • 요약

  • 10장. 주피터
    • 설치와 시작
    • 대시보드
    • 노트북 생성
    • 파이썬 스크립트와 상호작용
    • 셀 작업
      • 셀 트릭
        • 셀 범위
        • 셀 실행
        • 재시작과 모두 실행
        • 매직
      • 셀 구조
        • 코드 셀
        • 마크다운 셀
        • 로우 셀
        • 헤딩 셀
    • 그래픽 생성
      • matplotlib 사용
      • 보케 사용
      • R 사용
      • 파이썬-nvd3 사용
    • 형식 변환
      • 그 외 형식
      • nbviewer
    • 요약

  • 11장. 미래
    • 역사
    • 주피터 프로젝트
      • 노트북
      • 콘솔
      • 주피터 클라이언트
      • 주피터의 미래
        • 공식 로드맵
        • 공식 하위 프로젝트
        • 인큐베이션
    • IPython
      • 현재 활동
    • 병렬화의 대두
      • 메가헤르츠 전쟁의 종말
      • 문제점
      • 과거와의 유사점
      • 현재
        • 문제는 더 커지고 어려워진다
        • 컴퓨터는 더 병렬화되고 있다
        • 클라우드가 밀려온다
        • 방법이 없다
    • 성장하는 전문성
      • NSF
        • 지속적인 혁신을 위한 소프트웨어 인프라
  • 도서 오류 신고

    도서 오류 신고

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

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

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