분류 전체보기
-
고성능 파이썬 Chapter 05 - 이터레이터와 제너레이터STUDY/고성능 파이썬 2024. 12. 8. 20:54
들어가며고성능 파이썬을 공부하게 된 가장 큰 이유는 파이썬의 Global Interpreter Lock (GIL)으로 인한 멀티 쓰레드 작업에서 효율적이지 못하게 작동하는 성질 때문인데, 파이썬 3.13에서 gil을 사용하지 않는 free-threaded build mode를 지원하게 된 것을 알게 되었다. 앞으로 파이썬 버전이 올라가면서 더욱 효율적인 파이썬을 사용할 수 있을거라는 기대가 생겼다.이 장에서 배울 내용- 제너레이터에서 메모리를 절약하는 방법- 제너레이터가 유용한 상황- 복잡한 제너레이터 작업에 itertools를 사용하는 방법- 지연 연산이 효과적인 경우와 그렇지 않은 경우프로그래밍을 처음 배우면 가장 먼저 배우는 것 중 하나가 "반복문" 이다. 파이썬에서 반복문은for i in rang..
-
고성능 파이썬 Chapter 04 - 사전과 셋STUDY/고성능 파이썬 2024. 12. 8. 15:44
이 장에서 배울 내용- 사전과 셋의 용도- 사전과 셋의 유사점- 사전의 오버헤드- 사전의 성능을 최적화하는 방법- 파이썬에서 사전을 사용해서 네임스페이스를 유지하는 방법셋과 사전은 특정 데이터를 고유하게 참조할 수 있는 별도 객체가 있는 상황에서 이상적이다. 사전은 key-value로 구성되어있고, 셋은 key값만 존재한다. 이때 key값은 hash가 가능하다면 어떤 타입이어도 상관 없다. 다만 주의해야 할 점은 key값은 유일해야 한다.셋과 사전은 삽입시의 시간복잡도는 O(1)이고, 탐색시에도 O(1)만에 값을 찾을 수 있다. (이 시간 복잡도는 hash 함수에 종속적인데, hash함수가 value를 균일하게, entropy가 높게, 유지할 수 있을때 O(1)로 동작할 수 있다 - hash 충돌이 생기..
-
고성능 파이썬 Chapter 03 - 리스트와 튜플STUDY/고성능 파이썬 2024. 12. 8. 01:52
들어가며앞으로 3,4,5 Chapter에서는 리스트, 튜플, 딕셔너리, 셋, 이터레이터, 제너레이터등 CS과목의 기조가 되는 자료구조에 대한 이야기를 다룬다. 각 상황에 맞는 적절한 자료구조를 사용하는 것이 최적화의 기본이기 때문에 파이썬에서 제공해주는 기본 자료형들에 대한 특성을 알아보는 뜻깊은 시간이 되길 바란다.이 장에서 배울 내용- 리스트와 튜플의 용도- 리스트/튜플 탐색의 복잡도- 리스트와 튜플의 차이점- 리스트에 항목을 추가하는 과정- 리스트와 튜플의 적용 시점리스트와 튜플은 배열의 일종이다. 각 항목의 순서가 항목 자체만큼 중요한 자료구조이다.리스트는 배열의 크기를 변경할 수 있는 동적 배열, 튜플은 내용이 고정된(변경 불가능한) 정적 배열이다.배열은 메모리 상에서 연속적으로 할당 받기 때문..
-
고성능 파이썬 Chapter 02 - 프로파일링으로 병목 지점 찾기STUDY/고성능 파이썬 2024. 12. 1. 18:56
들어가며1장에서는 파이썬의 코드 수행이 느린 이유와 기본적인 프로파일링의 필요성에 대해여 설명을 하는 챕터였다. Chapter2에서는 실질적으로 병목지점을 찾는 프로파일링 방법에 대한 내용을 다룬다. CPU 사용량과 RAM 사용량 등을 확인하는 라이브러리를 통해 실습이 기대가 된다.이 장에서 배울 내용- 코드에서 RAM 병목 지점을 찾는 방법- CPU와 메모리 사용량을 프로파일링 하는 방법- 바람직한 프로파일링의 깊이- 장시간 실행되는 애플리케이션의 프로파일링 방법- C파이썬의 내부 동작- 성능 튜닝 중 코드의 올바름을 유지하는 방법프로파일링으로 CPU 시간, 메모리 사용량을 살펴 볼 것이고, 네트워크 대역폭과 I/O측정에서도 비슷한 기법을 적용할 수 있다.프로파일링을 하면 병목지점을 빠르게 찾아낼 수 ..
-
고성능 파이썬 Chapter 1 실습STUDY/고성능 파이썬 2024. 11. 28. 23:11
2024.11.23 - [STUDY/고성능 파이썬] - 고성능 파이썬 Chapter 1 - 고성능 파이썬 이해하기 고성능 파이썬 Chapter 1 - 고성능 파이썬 이해하기들어가며회사에서 파이썬 프로그래밍을 하면서 생산성은 올라갔지만, 코드를 제대로 작성하고 있는지에 대한 많은 의심이 들었다. 일단은 "동작 하는" 코드를 만드는게 우선이었기 때문에 작성artificial-intelligent.tistory.com에 대한 실습 https://github.com/ckdgus0505/high_performance_python_2e/blob/master/01_understanding/practice01.ipynb high_performance_python_2e/01_understanding/practice01...
-
고성능 파이썬 Chapter 1 - 고성능 파이썬 이해하기STUDY/고성능 파이썬 2024. 11. 23. 16:36
들어가며회사에서 파이썬 프로그래밍을 하면서 생산성은 올라갔지만, 코드를 제대로 작성하고 있는지에 대한 많은 의심이 들었다. 일단은 "동작 하는" 코드를 만드는게 우선이었기 때문에 작성한 코드에 최적화를 할 수 있는 요소들이 많이 있었을 것이다. 좋은 코드, 성능 최적화에 대한 갈망이 마음 속에 있던 중 네이버에서 주최한 "DAN 24" 의 당신의 Python 모델이 이븐하게 추론하지 못하는 이유 [CPU 추론/모델서빙 Python 딥다이브]를 보고 파이썬에 Deep dive를 해야겠다는 생각이 들어서 Micha Gorelick, Ian Ozsvald의 저서 "고성능 파이썬"을 공부하고자 한다. 1.1 기본 컴퓨터 시스템컴퓨터 시스템은 연산장치(CPU, GPU), 저장장치(Cache, 주기억장치, 보조기억..
-