파이썬/책 정리
-
[공부] 파이썬 코딩의 기술 책 정리 #7-3파이썬/책 정리 2021. 4. 21. 12:56
58. 동시성과 Queue를 사용하기 위해 코드를 어떻게 리팩터링 하는지 이해하라. queue 내장 모듈의 Queue 클래스를 사용해 파이프라인을 스레드로 실행하게 구현하는 것이다. 일반적인 접근 방법은 필요한 병렬 I/O의 숫자에 맞춰 미리 정해진 작업자 스레드를 만든다. 프로그램은 이를 통해 자원 사용을 제어하고, 새로운 스레드를 자주 시작하면서 생기는 부가 비용을 덜 수 있다. from queue import Queue class ClosableQueue(Queue): ... in_queue = ClosableQueue() out_queue = ClosableQueue() in_queue에서 원소를 소비하는 스레드를 여러 개 시작할 수 있다. 각 스레드는 game_logic을 호출해 원소를 처리한 ..
-
[공부] 파이썬 코딩의 기술 책 정리 #7-2파이썬/책 정리 2021. 4. 21. 12:38
55. Queue를 사용해 스레드 사이에서 작업을 조율하라 동시성 작업을 처리할 때 가장 유용한 방식은 함수 파이프라인이다. 파이프라인은 순차적으로 실행해야 하는 여러 단계가 있고, 각 단계마다 실행할 구체적인 함수가 정해진다.작업은 매 단계 함수가 완료될 때마다 다음 단계로 전달되며, 더 이상 실행할 단계가 없을 때 끝난다. queue 내장 모듈에 있는 Queue는 새로운 데이터가 나타날 때까지 get 메서드가 블록되게 만들어서 작업자의 바쁜 대기 문제를 해결한다. 큐에 입력 데이터가 들어오기를 기다리는 스레드를 하나 시작한다. from queue import Queue my_queue = Queue() def consumer(): print('소비자 대기') my_queue.get() # 다음에 보여..
-
[공부] 파이썬 코딩의 기술 책 정리 #7-1파이썬/책 정리 2021. 4. 21. 12:34
7. 동시성과 병렬성 동시성 컴퓨터가 같은 시간에 여러 다른 작업을 처리하는 것처럼 보이는 것을 말한다. 동시성은 어떤 특정 유형의 문제를 해결하기 위한 도구로 사용된다. 동시 프로그램은 문제를 해결하는 과정이 동시에 독립적으로 시행되는 것처럼 보이게 한다. 병렬성 같은 시간에 여러 다른 작업을 실쩨로 처리하는 것을 말한다. 병렬성과 동시성의 가장 핵심적인 차이는 속도 향상에 있다. 어떤 프로그램의 서로 다른 두 실행 경로가 병렬적으로 진행되면 걸리는 시간이 반으로 줄어든다. 그러나 동시성 프로그램은 겉으로 볼 때는 병렬적으로 실행되는 것처럼 보이나, 전체 작업에 걸리는 시간은 빨라지지 않는다. 파이썬을 사용하면 다양한 스타일로 동시성 프로그램을 쉽게 작성할 수 있다. 스레드는 상대적으로 적은 양의 동시..
-
[공부] 파이썬 코딩의 기술 책 정리 #6파이썬/책 정리 2021. 4. 7. 14:12
6. 메타클래스와 애트리뷰트 메타클래스는 어렴풋이 이 개념이 클래스를 넘어서는 것임을 암시한다. 메타클래스를 사용하면 파이썬의 class 문을 가로채서 클래스가 정의될 때마다 특별한 동작을 제공할 수 있다. 메타 클래스와 애트리뷰트를 잘 사용하기 위해서는 최소 놀람의 법칙 을 따르고 잘 정해진 관용어로만 사용해야 한다. 최소 놀람의 법칙이란? 함수나 클래스는 다른 프로그래머가 당연하게 여길 만한 동작과 기능을 제공해야 한다는 뜻이다. 44. 세터와 게터 메서드 대신 평법한 애트리뷰트를 사용하라. 클래스에 게터나 세터 메서드를 명시적으로 정의하곤한다. class OldResister: def __init__(self, ohms): self._ohms = ohms def get_ohms(self): retu..
-
[공부] 파이썬 코딩의 기술 책 정리 #5파이썬/책 정리 2021. 3. 31. 16:03
5. 클래스와 인터페이스 파이썬은 상속, 다형성, 캡슐화등과 같은 모든 기능을 제공한다. 37. 내장 타입을 여러 단계로 내포시키기보다는 클래스를 합성하라 파이썬의 내장 딕셔너리 타입을 사용하면 객체의 생명 주기 동안 동적인 내부 상태를 유지할 수 있다. 동적 은 어떤 값이 들어올지 미리 알 수 없는 식별자들을 유지해야 한다는 뜻이다. class SimpleGradeBook: def __init__(self): self._grades = {} def add_student(self, name): self._grades[name] = [] def report_grade(self, name, score): self._grades[name].append(score) def average_grade(self, n..
-
[공부] 파이썬 코딩의 기술 책 정리 #4파이썬/책 정리 2021. 3. 28. 12:23
4. 컴프리헨션과 제너레이터 컴프리헨션 코딩 스타일은 제너레이터 이라는 특별한 구문을 사용해 이런(리스트, 딕셔너리, 집합 등) 타입을 간결하게 이터레이션하면서 원소로부터 파생되는 데이터 구조를 생성할 수 있다. 제너레이터는 함수가 전짐적으로 반환하는 값으로 이뤄지는 스트림을 만들어준다. 이터레이터를 사용할 수 있는 곳이라면 어디에서나 제너레이터 함수를 호출한 결과를 사용할 수 있다. 27. map과 filter 대신 컴프리헨션을 사용하라 다른 시퀀스나 이터러블에서 새 리스트를 만들어내는 간결한 구문을 리스트 컴프리헨션 이라고 한다. 리스트 컴프리헨션을 사용해 루프로 처리할 대상인 입력 시퀀스의 원소에게 적용할 변환식을 지정함으로써 같은 결과를 얻을 수 있다. squares = [x**2 for x in..
-
[공부] 파이썬 코딩의 기술 책 정리 #3파이썬/책 정리 2021. 3. 26. 13:24
Chapter3. 함수 19. 함수가 여러 값을 반환하는 경우 절대로 네 값 이상을 언패킹하지 말라 악어 개체의 몸 길이가 전체 개체군의 몸 길이 평균에 비해 얼마나 큰지 계산하는 함수를 작성한다면, def get_avg_ratio(numbers): average = sum(sumbers) / len(numbers) scaled = [x / average for x in numbers] scaled.sort(reverse=True) return scaled lengths = [63,75,85,64,34,74,53,88,53,86] longest, * middle, shortest = get_avg_ratio(lengths) print(f"최대 길이: {longest:>4.0%}") # 최대 길이: 130..
-
[공부] 파이썬 코딩의 기술 책 정리 #2파이썬/책 정리 2021. 3. 24. 11:29
리스트와 딕셔너리 리스트를 자연스럽게 보완 할 수 있는 타입이 딕셔너리 타입이다. 딕셔너리 타입은 검색에 사용할 키와 키에 연관된 값을 저장한다.(해시테이블, 연관 배열) 동적인 정보를 관리하는 데는 딕셔너리가 가장 이상적이다. 11. 시퀀스를 슬라이싱하는 방법을 익혀라 시퀀스를 여러 조각으로 나누는 슬라이싱 구문이 있다. 최소한의 노력으로 시퀀스에 들어 있는 아이템의 부분 집합에 쉽게 접근할 수 있다. 어떤 파이썬 클래스에도 슬라이싱을 추가할 수 있다. __getitem__과 __setitem 특별 메서드를 구현하면 된다. 리스트의 맨 앞부터 슬라이싱할 때는 시각적 잡음을 없애기 위해 0을 생략한다. 리스트의 끝에서부터 원소를 찾고 싶을 때는 음수 인덱스를 사용하면된다. a = list(range(10..