본문 바로가기

728x90
반응형

Langauge/Python

(13)
[Python] 연산 속도 올리기 - Numba 🐍 본 게시글은 Python 3.11.0 환경에서 작성되었습니다! Numba는 Python을 위한 Just-In-Time(JIT) 컴파일러로, 주로 수치 계산 및 과학적 컴퓨팅을 최적화하는 데 사용된다.Numpy와 함께 사용될 때 특히 강력하다. 특징JIT 컴파일 : 파이썬 코드를 실행 시간에 컴파일 하여 성능을 향상한다.Numpy 호환 : Numpy 배열과 많은 함수와 연산을 지원한다.GPU 지원 : NVIDIA GPU에서 CUDA를 사용하여 병렬 처리를 지원한다.간편한 사용 : 기존 Python 코드에 주석을 추가하는 방식으로 쉽게 사용할 수 있다. 장점성능 향상 : Python 코드를 C, Fortran과 유사한 속도로 실행 할 수 있게 한다.직관적인 인터페이스 : 코드를 최소한의 수정으로 사용할..
[Python] 병렬 처리 🐍 본 게시글은 Python 3.11.0 환경에서 작성되었습니다! 여러가지 작업을 처리해야 하는 경우 병렬 처리를 통해 훨씬 빠르게 처리할 수 있다.Multi-Processing4개의 작업을 순차적으로 처리해야 하는 경우, 멀티 프로세싱을 통해 병렬로 4개의 작업을 동시에 처리 할 수 있다.멀티 프로세싱은 메모리를 독립적으로 나누어 작업을 처리한다.자원을 독립적으로 점유하여 처리하기 때문에 안정적이다.개별적으로 자원을 점유하기 때문에 리소스 요구량이 크다. 한번에 처리할 수 있는 수는 CPU Core의 개수에 따라 다르다.import timefrom multiprocessing import Pooldef cpu_intensive_task(n): result = 0 for i in range(..
[Python] 연산 속도 올리기 - 프로파일링(Profiling) 🐍 본 게시글은 Python 3.11.0 환경에서 작성되었습니다! 프로파일링은 함수의 호출, 반환, 예외를 추적하고 각 함수 호출과 이벤트를 추적한다. 이를 통해 상대적으로 리소스를 많이 소비하는 부분(병목)을 찾아서 성능 개선에 집중 할 수 있다.import cProfileimport numpy as npdef find_max_python(numbers): max_value = numbers[0] for num in numbers: if num > max_value: max_value = num return max_value# 숫자가 포함된 리스트numbers = [np.random.randint(0,1000) for _ in range(1000000)..
[Python] 연산 속도 올리기 - 내장 함수 사용 🐍 본 게시글은 Python 3.11.0 환경에서 작성되었습니다! 연산 속도를 올리기 위해서 파이썬의 내장함수를 사용하여 개선할 수 있다. 예시 : 리스트 중복 제거 및 정렬import timeif __name__ == "__main__": # 중복된 숫자가 포함된 리스트 numbers = [5, 3, 8, 5, 2, 3, 9, 1, 2, 8, 7] start = time.time() # 1. 중복 제거 unique_numbers = [] for num in numbers: if num not in unique_numbers: unique_numbers.append(num) time.sleep(0.1) # 2. 정렬 (버블 정렬..
[Python] 연산 속도 올리기 - 개요 및 알고리즘과 자료구조 🐍 본 게시글은 Python 3.11.0 환경에서 작성되었습니다! 파이썬은 인터프리터 언어로 알려져 있지만 사실은 하이브리드 언어로 볼 수 있다.그 이유는 동작 방식을 보면 알 수 있다.  파이썬 코드가 동작하는 방식을 보면 프로그래머가 Python Source Code를 Python Interpreter에 전달하면 내부에서 다음과 같은 과정이 진행된다.Python Complier가 파이썬 소스 코드를 읽고 문법 검사 후 오류가 없으면 바이트 코드로 변환 한다.PVM(Python Virtual Machine)이 바이트 코드를 기계어로 한줄씩 번역한다. 이런 과정이 끝난 후 컴퓨터는 번역된 기계어를 실행한다. Python Compiler가 변환한 바이트 코드를 프로젝트에서 볼 수 있는데 바로 __pyca..

728x90
반응형