반응형

파이썬 15

파이썬 GIL과 멀티스레딩 - 멀티코어 환경에서 병렬 처리와 성능 한계 #1

요즘 컴퓨터 사양을 보다 보면 쿼드 코어니 옥타 코어니 하는 용어를 흔히 볼 수 있죠. 때문에 오히려 싱글 코어를 보기 어려워졌어요. 그런데, 왜 파이썬은 이 모든 코어를 동시에 사용하지 못하고 오로지 하나만 사용한다는 거예요. 이것은 파이썬의 GIL(Global Interpreter Lock) 메커니즘 때문인데요, 오늘은 파이썬의 가장 큰 특징인 GIL에 대해 정리해 보겠습니다.파이썬 GIL과 멀티스레딩 GIL(Global Interpreter Lock)GIL은 이름 그대로 파이썬 인터프리터 전체에 걸쳐 작동하는 "잠금(Lock)" 장치입니다. 파이썬 인터프리터는 파이썬 코드를 읽고 실행하는 소프트웨어인데, GIL은 이 인터프리터가 한 번에 하나의 스레드(Thread)만이 파이썬 바이트코드(Bytec..

프롬프트 엔지니어링으로 챗GPT와 OpenAI API 활용 - GPT에게 원하는 답을 얻는 법 #1

이번 글부터는 최근 이슈가 되고 있는 생성형 AI와 관련한 기술에 대해 시작해 보겠습니다. 그중 오늘부터 몇 회에 걸쳐 프롬프트 엔지니어링에 살펴보겠습니다. 물론, 가장 많이 사용되는 OpenAI의 GPT 기반으로 설명하게요. 프롬프트 엔지니어링을 이용해서 GPT에게 원하는 답을 얻는 방법챗지피티를 사용하는 사람들 중에서도 "AI가 원하는 답을 주지 않아!"라고 하는 사람들이 가끔 있더라고요, 이때는 그저 '자세하게 질문해'라고 대답을 해주곤 하는데요, 사실은 이 말이 매우 정확하게 충고해 주는 거예요. 챗GPT는 사용자의 입장을 고려해서 사용자는 알 수 없지만, 중간에서 사용자의 요구에 대해 GPT가 보다 적극적이고 자세하고 사용자가 알기 쉽게 대답하도록 가공하는 단계가 있어요. 때문에 챗GPT에게 어..

Django vs Flask 파이썬 웹 프레임워크 비교 - Flask #1

Flask와 Django를 비교해 보며 어떤 상황에서 Flask를 선택하는 것이 유리한지 판단해 보고자 하며, 초보 웹 개발자도 쉽게 이해할 수 있는 예제 코드와 구조 설명을 통해 Flask의 학습 장벽을 낮추고, 궁극적으로 Flask 기반 웹 프로젝트 개발 적용할 수 있도록 정리합니다.    Flask 기본 배경Flask는 "필요한 기능만 붙이자", "개발자가 구조를 정의한다"는 철학 아래 다음과 같은 특징을 가집니다.의존성 최소화: Flask는 처음 설치할 때 매우 가볍습니다. 단 두 개의 외부 라이브러리만을 기본으로 의존합니다: `Werkzeug`(웹 서버 게이트웨이 인터페이스)와 `Jinja2`(템플릿 엔진).플러그인 구조: 필요한 기능(ORM, 인증, 관리 콘솔 등)은 개발자가 선택해 확장할 수..

파이썬 asyncio로 배우는 비동기 I/O 코루틴과 이벤트 루프 이해하기 - 고급 Python #8

비동기 프로그래밍이란, 어떤 함수를 호출할 때 해당 함수가 즉시 응답을 반환하지 않더라도 프로그램이 계속해서 다른 작업을 진행할 수 있도록 하는 방식을 말합니다. 오늘은 비동기 프로그래밍에 대해 조금 더 깊이 있게 살펴보려 합니다.  파이썬 asyncio로 배우는 비동기 프로그래밍   이벤트 루프와 코루틴이벤트 루프(Event Loop)의 동작 원리asyncio에서 가장 중요한 개념은 이벤트 루프죠. 이벤트 루프는 말 그대로 “이벤트가 발생하기를 기다렸다가, 발생하면 적절한 콜백(callback)을 실행하는” 메커니즘입니다. 사실 이 개념은 자바스크립트의 비동기 모델이나 다른 언어에서도 흔히 볼 수 있는데요, 이벤트 루프는 파이썬 프로그램에서 코루틴으로 정의된 함수들을 스케줄링하고, 각 코루틴이 I/O를..

파이썬 멀티스레딩과 멀티프로세싱의 차이와 활용 방법 - 고급 Python #7

파이썬에서는 이런 병렬 처리를 위해 크게 두 가지 방식을 제공합니다. 바로 '멀티스레딩(Multithreading)'과 '멀티프로세싱(Multiprocessing)'인데요. 이 두 가지 방식은 각각의 특징과 장단점이 있어서, 상황에 따라 적절히 선택해 사용해야 합니다.  파이썬 멀티스레딩과 멀티프로세싱의 차이와 활용  멀티스레딩 개념과 특징 멀티스레딩이라는 단어, 뭔가 복잡해 보이지만 사실 우리 일상 속에서도 쉽게 찾아볼 수 있는 개념입니다.예를 들어볼게요. 여러분이 책을 읽으면서 동시에 음악을 듣고 있다고 생각해 보세요. 이때 여러분의 뇌는 '책 읽기'와 '음악 듣기'라는 두 가지 작업을 동시에 처리하고 있는 거죠. 이처럼 하나의 프로세스(우리 뇌) 안에서 여러 작업(책 읽기, 음악 듣기)을 동시에 처..

파이썬 데이터 클래스와 타이핑. 효율적인 코드 작성을 위한 고급 프로그래밍 - 고급 Python #6

파이썬의 dataclasses 모듈은 파이썬 3.7 버전부터 도입되었고, 주로 간결하고 가독성 높은 클래스를 작성하기 위한 용도로 사용합니다.원래(파이썬 3.7 이전) 파이썬 클래스는 객체를 생성하기 위해서는 __init__ 메서드에서 필요한 속성을 일일이 할당해야만 했습니다. 그러나 최근에는 클래스 정의 시 @dataclass 데코레이터만 붙이면 __init__부터 __repr__, __eq__ 같은 메서드를 자동으로 생성해 주어, 코드가 훨씬 간결해지게 되었죠.  파이썬 데이터 클래스와 타이핑데이터 클래스란 뭘까요?간단히 말해, 데이터를 담는 클래스를 쉽게 만들 수 있게 해주는 도구예요. 예를 들어, 학생 정보를 담는 클래스를 만든다고 생각해 봅시다.from dataclasses import data..

파이썬 Collections 모듈 가이드 Counter부터 deque까지 활용 방법 - 고급 Python #5

이번에는 파이썬의 Collections 모듈에 대해 살펴보겠습니다. 주요 클래스인 Counter, defaultdict, OrderedDict, namedtuple, deque의 활용 방법을 정리해 보겠습니다.  파이썬 Collections 모듈Collections 모듈은 파이썬의 일반 내장 컨테이너(dict, list, set, tuple)를 확장하는 특수 컨테이너 자료형을 구현합니다.     Counter 클래스Counter 클래스는 해시 가능한 객체를 세는 데 사용하는 딕셔너리의 하위 클래스입니다. 요소가 딕셔너리 키로 저장되고, 그 개수가 딕셔너리 값으로 저장되는 방식이죠.예를 들어, 문자열에서 각 문자의 출현 빈도를 세고 싶다면 이렇게 할 수 있습니다.from collections import ..

파이썬 리스트(List) 세트(Set) 딕셔너리(Dictionary) 고급 활용법 - 고급 Python #4

오늘은 파이썬의 꽃이라고 할 수 있는 리스트, 세트, 딕셔너리의 고급 활용법에 대해 알아보려고 합니다. 이 세 가지 자료구조는 파이썬 프로그래밍의 근간을 이루는 요소들인데요, 이들을 제대로 활용하면 코드의 효율성과 가독성을 상당히 높일 수 있을 거예요.  파이썬 리스트(List) 세트(Set) 딕셔너리(Dictionary) 고급 활용법1. 파이썬 리스트(List)  리스트 컴프리헨션리스트 컴프리헨션은 파이썬의 강력한 기능 중 하나입니다. 복잡한 for 루프를 한 줄로 압축할 수 있죠. 한 줄의 간결한 문법으로도 꽤 복잡한 연산을 수행할 수 있게 해 줍니다. 흔히 단순히 for 문을 줄이는 데 사용하지만, 조건문을 함께 쓰는 방식 등을 통해 코드 가독성과 유지보수성까지 높일 수 있습니다. 기본 형태numb..

파이썬 제너레이터와 이터레이터 효율적인 대용량 데이터 처리와 메모리 최적화 - 고급 Python #3

이번에는 파이썬의 제너레이터와 이터레이터라는 주제를 다뤄보겠습니다. 고급 파이썬의 내용으로 조금 더 높은 스킬을 얻기를 원하신다면 이 부분 역시 천천히 읽어 보시면 도움이 되실 거예요.파이썬 제너레이터와 이터레이터  커스텀 이터레이터 만들기이터레이터는 단순히 for 루프에서 사용되는 객체가 아닙니다. 이터레이터를 직접 만들어 사용하면, 복잡한 로직을 간결하게 표현할 수 있죠. 커스텀 이터레이터를 만들기 위해서는 __iter__와 __next__ 메서드를 구현해야 합니다. 예를 들어, 피보나치수열을 생성하는 이터레이터를 만들어 볼까요? class Fibonacci: def __init__(self, limit): self.limit = limit self.a, self.b = 0, 1 ..

메타클래스와 데코레이터로 배우는 파이썬 고급 프로그래밍 - 고급 Python #2

이번에는 파이썬 프로그래밍에서 고급 문법인 데코레이터와 메타클래스의 개념과 활용법에 대해 살펴보고, 코드의 재사용성과 유지보수성을 높이기 위한 기법으로 데코레이터와 메타클래스를 활용하여 보다 효율적이고 유연한 프로그래밍 방식을 이해할 수 있도록 정리해 보겠습니다.  파이썬 메타클래스와 데코레이터  데코레이터(Decorator)데코레이터는 쉽게 말해 ‘함수나 메서드, 클래스를 꾸며주는 도구’입니다. 파이썬에서 데코레이터를 적용한다는 것은 특정 함수나 클래스를 인자로 받아 다른 함수나 클래스를 반환하는 특별한 함수(혹은 객체)를 사용한다는 뜻입니다.흔히 @ 기호를 사용하여 함수 정의부 바로 위에 붙이는데, 이를 통해 본래 함수의 내부 코드를 수정하지 않고도 새로운 기능을 덧입힐 수 있습니다.   간단한 예시..

반응형