장바구니 담기 close

장바구니에 상품을 담았습니다.

파이썬 동시성 프로그래밍

파이썬 동시성 프로그래밍

  • 엘리엇포브스
  • |
  • 에이콘출판
  • |
  • 2018-09-18 출간
  • |
  • 388페이지
  • |
  • 188 X 235 X 22 mm
  • |
  • ISBN 9791161752044
판매가

30,000원

즉시할인가

27,000

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
27,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




★ 이 책에서 다루는 내용 ★
■ 파이썬 스레딩 및 멀티프로세싱
■ 스레드를 통한 동시성 이해
■ 자식 스레드의 예외 관리
■ 동시성 시스템의 어려움(공유 자원)
■ 순차적인 프로세스 통신(CSP)으로 동시성 시스템 구축
■ 동시성 시스템 유지 및 관리
■ 동시성 시스템과 리액트 프로그래밍
■ 특정 문제 해결과 GPU

★ 이 책의 대상 독자 ★
동시성 프로그래밍을 시작하려는 파이썬 개발자들을 대상으로 하며, 기본적인 파이썬 지식을 알고 있다는 가정하에 집필했다.

★ 옮긴이의 말 ★
PYPL, Tiobe를 참고하면 파이썬 언어의 사용 빈도 순위는 모두 5위 안에 들만큼 전 세계의 많은 사람이 사용하고 있다. 그만큼 쉬운 문법 구조와 사용 및 편리함을 나타내고 있다.
컴퓨터 및 전자 관련 전공으로 입학하면 가장 먼저 배우는 것이 ‘컴퓨터 구조’다. 폰 노이만의 현대식 컴퓨터 개발부터 시작해, 오늘날 운영체제의 원리까지 길고 긴 여정이 시작된다. 그중 가장 기본적인 컴퓨터 구조 및 원리에서 동시성과 병렬화를 빼놓을 수 없다. 이러한 개념을 적용하는 이유는 바로 프로그램의 속도 때문이다. 더 빠르고 효율적으로 연산을 수행하고자 적용하는데, 이제 막 입문한 사람들에게 쉽지만은 않다.
이 책은 스레드, 프로세스, 실행자, 풀, 이벤트 기반 및 리액트 프로그래밍 같은 컴퓨터 과학의 개념과 함께 이를 파이썬 프로그래밍으로 풀어본다. 어려운 개념과 설명을 쉽게 예제 형식으로 풀었으며, 실제로 이러한 개념을 적용할 때 사용되는 다양한 라이브러리를 적극적으로 이용한다.
먼저 동시성과 병렬화의 기본적인 개념을 소개한다. 컴퓨터 아키텍처와 관련된 부분도 쉽게 설명하고 있다. 다음으로 스레드와 관련해 설명한다. 큐 자료 구조와 접목한 스레드 프로그램을 작성해본다. 6장에서는 파이썬 프로그램의 디버깅과 벤치마킹을 해본다. 7장과 8장에서는 퓨처 객체, ProcessPoolExecutor, 멀티프로세싱에 대해 살펴본 후, 9장에서 asyncio 라이브러리를 활용해 이벤트 기반 프로그래밍을 배워본다. 10장에서는 RxPY 라이브러리를 이용해 리액트 프로그래밍을 알아보고, 11장에서는 GPU를 활용해 본다.
입문 및 예제에 초점이 맞춰진 책이다 보니, 깊은 개념에 대한 설명이 조금 부족할 수 있다. 각주 및 참고 박스를 통해 최대한 친절하게 전달하고자 노력했다. 대부분 윈도우 운영체제 환경에서 정상적으로 실행되지만, 스레드나 프로세스를 다루는 예제에서는 리눅스 환경을 이용하거나 각주를 참고하자.
최근에는 초등학교부터 코딩 열풍이 분다고 한다. 사교육 시장에서는 단순한 암기와 주입식 코딩 교육이 많다고 한다. 가장 중요한 것은 흥미다. 내가 좋아하는 부분에 흥미를 가지고 즐겁게 프로그래밍을 배우고, 모르는 부분은 스스로 찾아보고 생각하는 과정이 가장 중요하다. 때로는 정교한 알고리즘을 설계해야 하며, 좋은 라이브러리가 있을 때는 이를 적재적소에 활용할 필요도 있다. 컴퓨터 과학을 배우기 시작했고 기본적인 파이썬 언어를 다룰 줄 안다면 이 책을 적극 추천한다.

이창화


목차


1장. 시작하기
__동시성 개념의 역사
__스레드와 멀티스레드
____스레드란?
____멀티스레딩이란?
__프로세스
____프로세스의 속성
__멀티프로세싱
____이벤트 기반 프로그래밍
____터틀
__반응형 프로그래밍
____ReactiveX(RxPY)
__GPU 프로그래밍
____PyCUDA
____OpenCL
____Theano
__파이썬의 한계
____Jython
____IronPython
__동시에 그림 다운로드하기
__순차적으로 다운로드하기
____동시에 다운로드하기
__멀티프로세싱으로 소인수 찾기
____순차적으로 소인수 구하기
____동시에 소인수 구하기
__요약

2장. 병렬화
__동시성에 대한 이해
____동시성 시스템의 특징
__I/O 문제
__병렬화 이해하기
____CPU 제약 문제
__CPU상에서 어떻게 작동될까?
____단일 코어 CPU
____클록 속도
____마르텔리 범용성 모델
____시분할(작업 스케줄러)
____멀티 코어 프로세서
__시스템 아키텍처 스타일
____SISD
____SIMD
____MISD
____MIMD
__컴퓨터 메모리 아키텍처 스타일
____UMA
____NUMA
__요약

3장. 스레드 라이프
__파이썬에서의 스레드
____스레드 상태
____상태 플로우 차트
____여러 형태의 스레드
____스레드를 시작하는 방법
____포킹
____스레드 데몬화
__파이썬에서 스레드 다루기
____스레드 시작하기
____스레드를 이용해 프로그램 속도 낮추기
____현재 실행 중인 모든 스레드의 개수 구하기
____현재 스레드 나타내기
____메인 스레드
____모든 스레드 열거하기
____스레드 확인하기
____스레드 종료하기
____고아 프로세스
__운영체제는 어떻게 스레드를 다룰까?
____프로세스 생성과 스레드 생성
__멀티스레딩 모델
____일대일 스레드 매핑
____다대일
____다대다
__요약

4장. 스레드 간 동기화
__스레드 간 동기화
____철학자의 저녁식사
____경합 조건
____위험 영역
__공유 자원과 데이터 경합
____join 메소드
____락
____R락
____R락과 일반적인 락
____컨디션
____세마포어
____한정된 세마포어
____이벤트
____배리어
__요약

5장. 스레드 간의 통신
__기본적인 자료 구조
____세트
____데코레이터
____클래스 데코레이터
____리스트
____큐
____queue 객체
____deque 객체
____원소 추가하기
____원소 꺼내기
____원소 삽입하기
____회전
__자체적인 스레드 세이프 통신 구조 정의하기
____웹 크롤러 예제
__요약

6장. 디버깅과 벤치마킹
__테스트 전략
____왜 테스트를 해야 하는가?
____동시성 소프트웨어 시스템 테스트
____어떤 것을 테스트할까?
____단위 테스트
____동시성 코드의 단위 테스트
____통합 테스트
__디버깅
____단일 스레드에서 작동해보기
____Pdb
____자식 스레드에서 예외 처리하기
__벤치마킹
____timeit 모듈
____데코레이터 활용하기
____타이밍 컨텍스트 관리자
__프로파일링
____cProfile
____line_profiler 툴
____메모리 프로파일링
__요약

7장. 실행자와 풀
__동시성 퓨처
____Executor 객체
__퓨처 객체
____퓨처 객체 내의 메소드
____퓨처 객체의 단위 테스트
____호출 가능한 작업 취소하기
____결과 얻어내기
____as_completed 사용하기
____콜백 설정하기
____예외 클래스
__ProcessPoolExecutor
____ProcessPoolExecutor 생성하기
____컨텍스트 관리자
____연습
____연산 속도 높이기
__웹 크롤러 성능 높이기
____계획하기
____연습: 각 페이지에서 크롤링한 더 많은 정보 얻기
__파이썬 2
__요약

8장. 멀티프로세싱
__GIL 작업
____하위 프로세스 활용하기
__프로세스 라이프
____fork를 사용해 프로세스 시작하기
____프로세스 스폰
____forkserver
____데몬 프로세스
____PID를 이용해 프로세스 확인하기
____프로세스 종료하기
____현재 프로세스 얻기
____프로세스를 하위 클래스화하기
__멀티프로세싱 풀
____concurrent
____컨텍스트 관리자
____프로세스 풀에 작업 전달하기
__프로세스 간 통신
____파이프
____파이프로 작업하기
____예외 처리하기
__multiprocessing
____네임스페이스
____큐
____Listener와 Client 클래스
__로깅
________예제
__순차적인 프로세스 통신하기
____PyCSP
__요약

9장. 이벤트 기반 프로그래밍
__이벤트 기반 프로그래밍
____이벤트 루프
__asyncio
____시작하기
____이벤트 루프
____태스크
____태스크 함수
__퓨처
____코루틴
____트랜스포트
____프로토콜
____코루틴 간의 동기화
____세마포어와 한정된 세마포어
____하위 프로세스
__asyncio 프로그램 디버깅
____디버깅 모드
__트위스티드
____간단한 웹 서버 예제
__gevent
__이벤트 루프
____greenlet
____예제: 호스트이름
____monkey 패키지를 이용한 패치
__요약

10장. 리액트 프로그래밍
__리액트 프로그래밍의 기본
____진정한 리액트 프로그래밍
__ReactiveX(RX)
____RxPY 설치하기
____관찰 가능 속성
____람다 함수
____오퍼레이터와 연결
____다양한 오퍼레이터
____핫 및 콜드 관찰 가능 속성
____이벤트 내보내기
____멀티캐스팅
____관찰 가능 속성 연결하기
____동시성
__PyFunctional
____설치와 공식 문서
____간단한 예제
____스트림, 변환, 액션
____필터링 리스트
____SQLite3 읽기 및 쓰기
____압축된 파일
____병렬 실행
__요약

11장. GPU 사용하기
__GPU 소개
__왜 GPU를 사용하는가?
____데이터 사이언스
__CUDA
____엔비디아 그래픽 카드 없이 CUDA로 작업하기
__PyCUDA
____특징
____간단한 예제
____커널
____GPU 배열
__Numba
____개관
____Numba의 특징
____하드웨어 간 호환성
____CUDA 기반 GPU에서의 Numba
____AMD APU에서의 Numba
__Accelerate
__Theano
____필요사항
____시작하기
____GPU에서 Theano 사용하기
____멀티 GPU 활용하기
__PyOpenCL
____예제
__요약

12장. 솔루션 선택하기
__책에서 다루지 못한 라이브러리
____GPU
____이벤트 기반과 리액트 라이브러리
____데이터 사이언스
__시스템 디자인하기
____요구사항
____디자인
____디자인과 관련된 책
____연구
__요약

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.