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의 대화형 특징과 병렬 컴퓨팅 측면, 그 외 외부 도구와의 통합, 테스트, 설명서 같은 개념을 함께 배우려는 사용자에게 이상적이다.
목차
목차
- 1장. IPython을 사용한 고성능 컴퓨팅
- 속도의 필요성
- 포트란으로 해결 - 포트란이 다룬 문제
- 가독성
- 이식성
- 효율성
- 컴퓨팅 환경
- IPython과 포트란 중 선택
- 포트란
- IPython
- 객체지향
- 채택의 편이성
- 대중성 - 포트란 대 IPython
- 유용한 라이브러리
- 소프트웨어 개발(과 유지보수) 비용
- 요구사항과 명세 얻기
- 개발
- 실행
- 테스트와 유지보수
- 대안
- 교차 언어 개발
- 프로토타이핑과 탐색 개발
- 사례 - 고속 푸리에 변환
- 고속 푸리에 변환
- 포트란
- Python
- 고속 푸리에 변환
- 성능 관점
- 소프트웨어 공학 관점
- 복잡도 기반 측정
- 크기 기반 측정
- 현황
- 고성능 컴퓨팅
- 고성능 컴퓨팅 학습 곡선
- 넘쳐나는 병렬화의 기회(아마존의 컴퓨터는 사용자의 컴퓨터보다 크다)
- 고성능 컴퓨팅과 병렬화
- 클라우드와 고성능 컴퓨팅
- 병렬
- 용어
- 병렬 프로그래밍 예제
- 직렬 프로그램
- 병렬 동등
- 논의
- 요약
- IPython이란?
- IPython 설치
- 통합 배포
- Mastering
- 콘다로 패키지 관리
- 캐노피 패키지 매니저
- 노트북의 변화터미널에서 시작하기
- 파이썬을 뛰어넘는 IPython
- 셸 통합
- 히스토리
- 매직 명령어
- 맞춤형 매직 명령어 생성
- 싸이썬
- IPython 설정
- 디버깅
- 사후 분석 디버깅
- 구동 시 디버깅
- 디버거 명령어
- 읽기 - 평가 - 출력 루프와 IPython 아키텍처
- 대안 개발 환경
- 스파이더
- 캐노피
- PyDev
- 그 밖의 환경
- 요약
- 직렬 프로세스
- 프로그램 카운터와 주소 공간
- 배치 시스템
- 멀티태스킹과 선점
- 시분할
- 스레딩
- 파이썬으로 스레딩
- 예제
- 스레딩의 한계
- 전역 인터프리터 락
- 인터프리터가 하는 일
- 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 함수 장식자
- 데이터 병렬화
- 데이터 종속성이 없는 경우
- 외부 데이터 종속성
- 애플리케이션 조종
- 디버깅
- 사전 사후 분석 디버깅
- 안전한 종료
- 요약
- 저장소 계층 구조
- 주소 공간
- 데이터 지역성
- 제로MQ
- 예제 제로MQ 프로그램
- 서버
- 클라이언트
- 제로MQ의 메시징 패턴
- 양방향
- 클라이언트와 서버
- 게시와 구독
- 푸시와 풀
- 제로MQ의 주요 특징
- 제로MQ 사용 시 이슈
- 시작과 종료
- 프로세스 찾기
- 예제 제로MQ 프로그램
- MPI
- Hello World
- 순위와 역할
- 점대점 커뮤니케이션
- 브로드캐스팅
- 리듀스
- 논의
- 설정 변경
- 작업 분할
- 작업 분배
- 프로세스 제어
- 마스터
- 워커
- 제로MQ와 IPython
- 제로MQ 소켓 타입
- IPython 컴포넌트
- 클라이언트
- 엔진(들)
- 컨트롤러
- 허브
- 스케줄러
- 연결 그림
- 메시징 유스케이스
- 등록
- 심장 박동
- IOPub
- 요약
- 성능 프로파일링
- utils.timing
- %%timeit 사용
- %%prun 사용
- AsyncResult 클래스
- multiprocessing.pool.Pool
- 블로킹 메서드
- 논블로킹 메서드
- 결과 획득
- 다양한 메서드를 사용한 예제 프로그램
- mp.pool.AsyncResult
- 결과 획득
- 다양한 메서드를 사용한 예제 프로그램
- AsyncResultSet 메타데이터
- 메타데이터 키
- 그 밖의 메타데이터
- multiprocessing.pool.Pool
- Client 클래스
- 속성
- 메서드
- View 클래스
- View 속성
- 파이썬 함수 호출
- 동기식 호출
- 비동기식 호출
- 설정 호출
- 잡 제어
- DirectView
- 데이터 이동
- 임포트
- 논의
- LoadBalancedView
- 데이터 이동
- 임포트
- 요약
- R
- rpy2 모듈/확장
- rpy2 설치
- Rmagic 사용
- %R 매직
- %%R 매직
- 푸시와 풀
- 그래픽
- rpy2.robjects 사용
- 기초
- 문자열을 R로 인터프리팅
- rpy2 모듈/확장
- 옥타브
- oct2py 모듈과 확장
- oct2py 설치
- 옥타브 매직 사용
- %octave 매직
- %%octave 매직
- 푸시와 풀
- 그래픽
- 옥타브 모듈 사용
- 푸시와 풀
- 옥타브 코드 실행
- oct2py 모듈과 확장
- 하이
- hymagic 모듈과 학장
- hymagic 설치
- hymagic 사용
- %hylang 매직
- %%hylang 매직
- 하이 간단 소개
- Hello world!
- 괄호에 익숙해지기
- 뜬금없는 위치에서의 산술 연산
- 연쇄적 연산은 어디서든 가능하다
- 하이의 제어 구조
- 파이썬 호출
- hymagic 모듈과 학장
- 요약
- Matplotlib
- matplotlib 시작
- 초기 그래프
- 그래프 수정
- 대화형 제어
- 보케
- 보케 시작하기
- 초기 그래프
- 그래프 수정
- 그래프 맞춤화
- 대화형 플롯
- 대화형 플롯 예제
- R
- ggplot2 설치와 판다스
- 데이터 프레임 사용
- 초기 그래프
- 그래프 수정
- 다른 관점
- ggplot2 설치와 판다스
- 파이썬-nvd3
- 파이썬-nvd3 시작하기
- 초기 그래프
- 여러 도구를 함께 사용하기.
- 다른 종류의 플롯
- 요약
- 단위 테스트
- 간단한 소개
- 어서션
- 환경 이슈
- 테스트하기 쉽도록 테스트 작성
- 간단한 소개
- unittest
- 주요 개념
- setUp과 tearDown을 사용한 테스트
- 일회성 setUp과 tearDown
- 장식자
- pytest
- 설치
- 후방 호환성
- 테스트 찾기
- 테스트 파일 구성
- 어서션
- setUp과 tearDown을 사용한 테스트
- 전통적인 xUnit방식
- 픽스처 사용
- 누락과 실패
- 몽키패치
- nose2
- 설치
- 후방 호환성
- 테스트 찾기
- 각 테스트 실행
- 어서션과 설정, 해제
- xUnit방식의 수정
- 장식자 사용
- 플러그인
- junitxml 플러그인으로 XML 생성
- 요약
- 한 줄 주석
- 한 줄 주석 사용하기
- 함수 표기
- 문법
- 시맨틱
- 타입 힌트
- 문법
- 시맨틱
- 문서화 문자열
- 예제
- 문서화 문자열 상속
- 추천 요소
- 한 행 문서화 문자열
- 문법
- 다수 행 문서화 문자열
- 예제
- 예제
- RST(reStructuredText)
- 역사와 목표
- 고객
- 해결안
- 개요
- 문단
- 텍스트 방식
- 글머리
- 하이퍼링크
- 섹션
- Docutils
- 설치
- 용법
- 소스 파일 명세
- 스핑크스
- 설치와 시작
- 소스 파일 명시
- 요약
- 설치와 시작
- 대시보드
- 노트북 생성
- 파이썬 스크립트와 상호작용
- 셀 작업
- 셀 트릭
- 셀 범위
- 셀 실행
- 재시작과 모두 실행
- 매직
- 셀 구조
- 코드 셀
- 마크다운 셀
- 로우 셀
- 헤딩 셀
- 셀 트릭
- 그래픽 생성
- matplotlib 사용
- 보케 사용
- R 사용
- 파이썬-nvd3 사용
- 형식 변환
- 그 외 형식
- nbviewer
- 요약
- 역사
- 주피터 프로젝트
- 노트북
- 콘솔
- 주피터 클라이언트
- 주피터의 미래
- 공식 로드맵
- 공식 하위 프로젝트
- 인큐베이션
- IPython
- 현재 활동
- 병렬화의 대두
- 메가헤르츠 전쟁의 종말
- 문제점
- 과거와의 유사점
- 현재
- 문제는 더 커지고 어려워진다
- 컴퓨터는 더 병렬화되고 있다
- 클라우드가 밀려온다
- 방법이 없다
- 성장하는 전문성
- NSF
- 지속적인 혁신을 위한 소프트웨어 인프라
- NSF