HOME > 상세정보

상세정보

파이썬 동시성 프로그래밍 : 명료하고 훌륭한 동시성 파이썬 코드 작성하고 개념 이해하기

파이썬 동시성 프로그래밍 : 명료하고 훌륭한 동시성 파이썬 코드 작성하고 개념 이해하기

자료유형
단행본
개인저자
Forbes, Elliot 이창화, 역
서명 / 저자사항
파이썬 동시성 프로그래밍 : 명료하고 훌륭한 동시성 파이썬 코드 작성하고 개념 이해하기 / 엘리엇 포브스 지음 ; 이창화 옮김
발행사항
서울 :   에이콘,   2018  
형태사항
386 p. : 삽화 ; 24 cm
총서사항
Acorn + PACKT technical book 시리즈
원표제
Learning concurrency in Python
ISBN
9791161752044 9788960772106 (Set)
일반주기
색인수록  
일반주제명
Python (Computer program language) Application software --Development
000 00000cam c2200205 c 4500
001 000045964292
005 20181210155814
007 ta
008 181210s2018 ulka 001c kor
020 ▼a 9791161752044 ▼g 94000
020 1 ▼a 9788960772106 (Set)
035 ▼a (KERIS)BIB000014936556
040 ▼a 247009 ▼c 247009 ▼d 211009
041 1 ▼a kor ▼h eng
082 0 4 ▼a 005.133 ▼2 23
085 ▼a 005.133 ▼2 DDCK
090 ▼a 005.133 ▼b P999 2018z22
100 1 ▼a Forbes, Elliot
245 1 0 ▼a 파이썬 동시성 프로그래밍 : ▼b 명료하고 훌륭한 동시성 파이썬 코드 작성하고 개념 이해하기 / ▼d 엘리엇 포브스 지음 ; ▼e 이창화 옮김
246 1 9 ▼a Learning concurrency in Python
260 ▼a 서울 : ▼b 에이콘, ▼c 2018
300 ▼a 386 p. : ▼b 삽화 ; ▼c 24 cm
440 0 0 ▼a Acorn + PACKT technical book 시리즈
500 ▼a 색인수록
650 0 ▼a Python (Computer program language)
650 0 ▼a Application software ▼x Development
700 1 ▼a 이창화, ▼e
900 1 0 ▼a 포브스, 엘리엇, ▼e
945 ▼a KLPA

소장정보

No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.133 P999 2018z22 등록번호 121246988 도서상태 대출중 반납예정일 2021-05-24 예약 예약가능 R 서비스 M

컨텐츠정보

책소개

파이썬 스레드 라이브러리를 사용해 멀티스레딩 모델과 시스템을 배운다. 스레드 풀, 프로세스 풀, 퓨처 객체를 소개하고, 멀티프로세싱도 배워본다. asyncio과 RxPY 라이브러리를 활용해 이벤트-반응형 및 리액트 프로그래밍을 살펴보고, PyCUDA 같은 라이브러리를 활용해 GPU를 활용한 파이썬 프로그램을 작성한다. 그 외에도 Theano, Numba, PyUnit, Pdb 등 다양한 라이브러리를 소개하고 이를 활용한 예제와 개념을 하나씩 알아본다.

★ 이 책에서 다루는 내용 ★

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

★ 이 책의 대상 독자 ★

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

★ 이 책의 구성 ★

1장, '시작하기!'에서는 스레드와 프로세스를 소개한다. 동시성 애플리케이션을 구성하는 데 있어 파이썬의 한계점도 살펴본다.
2장, '병렬화'에서는 동시성과 병렬화의 차이점을 다양한 관점으로 접근해본다. 이 두 개념을 어떻게 CPU에 활용하고, 나아가 컴퓨터 시스템 디자인과 동시성 및 병렬화 프로그래밍이 무엇인지 배운다.
3장, '스레드 라이프'에서는 파이썬 내장 스레드 라이브러리에 대해 자세히 다루고, 여러 가지 스레드 타입도 살펴본다. 멀티스레딩 모델과 사용자 스레드를 로우 레벨의 커널 스레드로 만드는 방법도 다룬다.
4장, '스레드 간의 동기화'에서는 동시성 파이썬 애플리케이션에 영향을 미치는 요인을 살펴본다. 데드락의 개념과 '철학자의 저녁식사' 문제가 시스템에 어떤 영향을 주는지 알아본다.
5장, '스레드 간의 통신'에서는 멀티스레드 시스템에서 통신을 구현하는 여러 메커니즘을 다룬다. 파이썬에 내장된 스레드 세이프 큐에 대해 자세히 배워본다.
6장, '디버깅과 벤치마킹'에서는 제품 출시에 앞서 동시성 시스템에 버그가 생기지 않았는지 확인하는 기술을 여러 측면에서 살펴본다. 코드상 논리 구조에 문제가 없는지 테스트하는 방법도 알아본다.
7장, '실행자와 풀'에서는 스레드 풀, 프로세스 풀, 퓨처 객체에 대한 모든 것을 다룬다. 스레드와 프로세스 풀을 인스턴스화하는 방법과 그 장점에 대해 살펴본다.
8장, '멀티프로세싱'에서는 멀티프로세싱의 개념과 이를 시스템에서 어떻게 활용하는지 배운다. 생성부터 종료까지 스레드 라이프에 대해 살펴본다.
9장, '이벤트 기반 프로그래밍'에서는 이벤트 기반 프로그래밍의 개념을 살펴보며, asyncio 라이브러리와 이벤트 기반 시스템이 어떻게 사용되는지 다룬다.
10장, '리액트 프로그래밍'에서는 리액트 프로그래밍의 핵심 원리를 깨우친다. 리액트 프로그래밍과 이벤트 기반 프로그래밍의 주된 차이점을 살펴보고, RxPY 파이썬 라이브러리를 소개한다.
11장, 'GPU 사용하기'에서는 데이터 사이언티스트가 실제 GPU를 활용하는 부분을 래퍼 라이브러리 활용법과 함께 소개한다.
12장, '솔루션 선택하기'에서는 지금까지 다루지 못한 라이브러리를 간단히 소개한다. 파이썬 프로그램에서 어떤 라이브러리와 개념을 적재적소에 사용할지 그 과정을 배워본다.


정보제공 : Aladin

저자소개

엘리엇 포브스(지은이)

2년간 JP모건체이스(JPMorgan Chase)에서 풀타임 소프트웨어 엔지니어로 일했다. 대학 생활 동안 웹 솔루션 개발 프리랜서로 일했으며, 2015년 스코틀랜드의 스트라스클라이드 대학교를 졸업했다. Go 언어, Node.js, 자바 등 다양한 언어를 다루며 기업용 동시성 시스템 개발에 많은 시간을 보냈다. 이러한 경험들이 이 책을 집필한 계기가 됐다. 런던의 바클리스 투자 은행(Barclays Investment Bank)에서 인턴으로 있었으며, 지난 3년간 여러 소프트웨어 개발 웹사이트를 운영했다.

이창화(옮긴이)

경북대학교에서 기계공학 및 컴퓨터공학을 전공하고 있으며, 여러 방면의 공학 기술과 학문 자체에 관심이 많다. 대학 입학 전 프로그래밍에 관심을 갖기 시작한 후 C, 파이썬, 웹 언어, 하드웨어 제어를 개발하게 됐다. 최근에는 머신러닝, 딥러닝, 컴퓨터 비전을 공부 중이며, 관련 책과 강의를 듣는 것을 즐긴다. 회사에 연연하지 않고 원하는 일과 연구에 몰입할 수 있는 라이프를 추구한다. 머릿속이 복잡할 때면 수영을 하며 시간을 보내고, 조용한 카페에서 주로 작업한다. 옮긴 책으로 『파이썬을 이용한 데이터 분석 2/e』(에이콘, 2018), 『파이썬 동시성 프로그래밍』(에이콘, 2018)이 있다.

정보제공 : Aladin

목차

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 
____이벤트 기반과 리액트 라이브러리 
____데이터 사이언스 
__시스템 디자인하기 
____요구사항 
____디자인 
____디자인과 관련된 책 
____연구 
__요약

관련분야 신착자료

한국데이터산업진흥원 (2020)