Programming Language

Programming Language/Python

[Python] 파이썬의 GIL

파이썬의 GIL파이썬을 어느 정도 사용해 본 사람이라면 “GIL(Global Interpreter Lock)”이라는 용어를 한 번쯤은 들어 봄.GIL은 파이썬 개발 및 운영 환경에서 동시성(Concurrency) 이슈를 다룰 때 매우 중요한 요소로 자주 언급됨. GIL이란 무엇인지1. 정의GIL은 CPython(표준 파이썬 구현체)에서 동시에 여러 스레드가 바이트코드를 실행하지 못하도록 하는 '글로벌(전역) 락'임.즉, 인터프리터 자체에서 단 한 스레드만이 바이트코드(파이썬 코드가 바이트코드로 컴파일된 결과)를 실행하도록 보장하는 일종의 상호 배제(Mutual Exclusion) 장치임. 2. 의미여러 CPU 코어가 있는 멀티코어 환경에서, 동일한 프로세스 안에서 여러 파이썬 스레드를 실행하더라도 동시에..

Programming Language/Python

[Python] 파이썬의 런타임

파이썬의 런타임파이썬(Python)의 “런타임(Runtime)”은 파이썬 코드를 해석·실행하는 인터프리터(Interpreter) 및 그 주변 환경(메모리 관리, 객체 모델, 표준 라이브러리, 스레딩 및 병렬성 모델 등)을 통칭함.즉, 개발자가 작성한 .py 소스 코드가 실제로 어떻게 컴파일(바이트코드 변환)되고, 어떻게 실행(인터프리트)되며, 어떤 방식으로 메모리와 객체를 관리하는지에 관한 모든 메커니즘을 포함함. 파이썬 런타임의 구성 요소1. 인터프리터(Interpreter) / VM파이썬 코드는 실행 시 먼저 바이트코드(bytecode) 로 컴파일되고, 이 바이트코드는 CPython(표준 구현)의 경우 CPython VM(가상머신)에서 해석(Interpretation)됨.다른 구현체(PyPy, Jyt..

Programming Language/Python

[Python] PYTHONPATH 활용

PYTHONPATHPYTHONPATH는 파이썬의 모듈 및 패키지 검색 경로(search path)에 영향을 주는 환경 변수(Environment Variable) 로서, 파이썬 인터프리터가 import 문을 처리할 때 특정 디렉터리를 추가로 탐색하도록 설정할 수 있음.즉, 파이썬이 어디서 모듈을 불러올지 결정하는 과정을 제어하는 중요한 수단 중 하나임. 파이썬의 모듈 및 패키지 검색 경로1. 기본 검색 경로파이썬 인터프리터가 시작될 때, 내부적으로 sys.path라는 리스트가 초기화됨.일반적으로 sys.path에는 아래와 같은 경로들이 포함됨.- 현재 작업 디렉터리(혹은 스크립트가 있는 디렉터리)- 표준 라이브러리 경로(예: /usr/lib/python3.9, C:\Python39\Lib 등)- site..

Programming Language/Python

[Python] CPU 아키텍처와 파이썬 라이브러리의 영향

요약CPU 아키텍처는 소프트웨어 전반(특히 저수준 언어나 네이티브 라이브러리를 포함하는 소프트웨어)에 영향을 끼치며, 파이썬 라이브러리 역시 예외가 아님.파이썬 자체가 인터프리터 언어라 하더라도, 많은 라이브러리가 내부적으로 C/C++/포트란 등 네이티브 코드를 포함하거나, CPU의 특정 명령어 세트(AVX, SSE, NEON 등)를 활용하여 성능을 최적화하기 때문임. 파이썬 인터프리터와 CPU 아키텍처1. 파이썬 인터프리터의 빌드일반적으로 파이썬은 x86_64(AMD64) 아키텍처용 바이너리로 가장 널리 배포됨.하지만 ARM(예: Raspberry Pi, Apple Silicon), PowerPC, RISC-V 등 다른 아키텍처용으로도 빌드가 가능함.CPU 아키텍처별로 바이너리 형식(예: ELF, Ma..

Programming Language/Python

[Python] 파이썬 환경을 분리해야 하는 이유

파이썬 환경을 분리해서 사용해야 하는 이유파이썬 프로젝트를 진행하다 보면, "환경(Environment)을 분리하는 것"이 매우 중요하다는 이야기를 자주 듣게 됨.실제로 데이터 사이언스, 웹 개발, 머신러닝, DevOps 등 다양한 분야에서 전문가들은 파이썬 환경 분리를 거의 필수적으로 실천하고 있음. 의존성 충돌 방지1. 프로젝트별로 다른 라이브러리 버전 사용프로젝트 A에서는 TensorFlow 2.8을 사용하고, 프로젝트 B에서는 TensorFlow 2.3을 사용해야 하는 경우가 있음.동일한 시스템 전역 환경에 모든 라이브러리를 설치해 두면, 버전 충돌이 일어나거나 기존 프로젝트가 정상적으로 동작하지 않을 수 있음. 2. 하위 호환성, 상위 호환성 이슈pandas, NumPy 같은 핵심 라이브러리들은..

Programming Language/Python

[Python] Miniconda 주요 특징

Miniconda미니콘다(Miniconda)는 파이썬/데이터 과학 생태계에서 널리 사용되는 경량 배포판(lightweight distribution)임.아나콘다(Anaconda)의 패키지 관리자(conda)와 필수 파이썬 환경만 제공하는 최소 구성 버전임.아나콘다와 비교했을 때 부피가 작고, 필요한 라이브러리들을 개별적으로 설치함으로써 보다 유연하고 미니멀한 구성을 선호하는 사용자층에게 적합함. 미니콘다의 주요 특징1. 경량 배포판미니콘다는 필수 파이썬(또는 R) 인터프리터와 conda 패키지 관리자만 포함하여 크기가 매우 작음(수십 MB 수준).아나콘다(수 GB 단위)와 달리 초기 설치 용량이 작으므로, 디스크 용량을 절약하며 빠르게 설치할 수 있음. 2. 유연한 환경 관리conda 환경 관리 기능은 ..

Programming Language/Python

[Python] Anaconda 핵심 요소

Anaconda아나콘다(Anaconda)는 데이터 과학, 머신러닝, 인공지능, 통계 분석 등을 위한 오픈소스 기반의 파이썬(Python) 및 R 언어 배포판(distribution)임.아나콘다 배포판은 복잡한 라이브러리 의존성을 체계적으로 관리하고, 개발 환경을 독립적으로 구성하기 쉽게 만들어 주므로, 데이터 사이언스 분야에서 사실상 표준 도구로 자주 사용됨. 아나콘다의 핵심 요소 1. 파이썬 및 R 환경 통합아나콘다는 데이터 사이언스 및 과학 컴퓨팅에 주로 사용되는 수백 가지의 파이썬 및 R 라이브러리를 포함하고 있음.특히 NumPy, pandas, SciPy, scikit-learn, Matplotlib, TensorFlow, PyTorch 등과 같은 핵심 라이브러리들이 미리 빌드되어 제공됨.R 언어..

Programming Language/Python

[Python] 데이터프레임 S3 저장 함수

코드 결과def save_to_parquet(self, *, df: pd.DataFrame, s3_output_path: str) -> None: df.to_parquet( path=s3_output_path, engine="pyarrow", compression="snappy", index=False, ) 설명위 코드는 Pandas DataFrame을 Parquet 포맷으로 저장하되, S3 경로를 직접 지정해 업로드하는 기능을 수행함. 함수 시그니처def save_to_parquet(self, *, df: pd.DataFrame, s3_output_path: str) -> None:1. self: 보통 클래스 내부 메서드(인스턴스 메서드)를 ..

Programming Language/Python

[Python] 파이썬에서 아테나에 쿼리를 실행하는 방법

코드 결과def fetchall_athena(self, *, query_string: str) -> list: client = boto3.client("athena") query_id = client.start_query_execution( QueryString=query_string, ResultConfiguration={ "OutputLocation": "s3:///" }, )["QueryExecutionId"] query_status = None while query_status in ["QUEUED", "RUNNING", None]: query_status = client.get_query_execut..

Programming Language/Python

[Python] 특정 기간동안 일 단위 날짜 함수

코드 결과def generate_daily_intervals(self, *, start_date: datetime, end_date: datetime): delta = timedelta(days=1) while start_date  코드 설명Python에서 제너레이터 함수(Generator Function)를 활용해, 특정 기간 동안 일 단위로 날짜를 순회하는 기능을 구현한 예시임. 함수 정의 시그니처def generate_daily_intervals(self, *, start_date: datetime, end_date: datetime): ...1. self클래스 메서드(인스턴스 메서드) 안에서 정의됨.메서드를 호출할 때 인스턴스 자신이 self로 전달됨. 2. * (별표)키워드 전용..

박경태
'Programming Language' 카테고리의 글 목록