1. GIL이란?- Global Interpreter Lock- Python의 CPython 인터프리터에서 동시에 하나의 스레드만 실행될 수 있도록 제한하는메커니즘- 멀티스레드 환경에서도 한 번에 하나의 스레드만 Python 바이트 코드를 실행할 수 있다.- 따라서 멀티스레딩으로 처리하면 느려질 수 있다. 2. GIL이 왜 필요할까?- Python의 메모리 안전성을 유지하기 위해 존재- Python이 메모리 관리 시스템은 참조 카운트를 기반으로 한다- 여러 개의 스레드가 동시에 실행되면 참조 카운트 값을 수정하는 과정에서 Race Condition이 발생할 수 있는데, 이를 방지하기 위함이다* Race Condition 이란?- 두 개 이상의 스레드가 동시에 같은 자원(메모리, 파일, 변수 등)에 접근..
1. asyncio가 필요한 이유* asyncio란? Pytyhon의 내장 모듈(라이브러리)- python은 위에서 아래로 순차적으로 실행된다(동기)- 네트워크 요청이나 데이터베이스 쿼리 같은 작업은 실행하는데 시간이 걸리기 때문에 대기 시간을 줄이기 위해 사용- I/O 작업이 완료될 때까지 기다리는 동안 다른 작업을 수행할 수 있다-싱글 스레드 환경에서도 병렬적으로 작업을 처리할 수 있다- 멀티스레딩보다 메모리 사용량이 적고, 코드가 간결해진다 2. 이벤트 루프란?- 비동기 작업(코루틴, I/O 작업 등)을 실행하고 관리하는 역할을 하는 핵심 엔진- 비동기함수(async def)를 실행하려면 반드시 이벤트 루프가 필요하다- 이벤트 루프는 비동기 작업을 예약하고 실행하며, 실행이 끝날때까지 관리한다- 한..
1. 비동기란? - 하나의 스레드에서 여러 작업을 동시에 실행하고 나중에 결과를 받아 처리할 수 있다.- I/O 바운드 작업에 적합(네트워크, DB 요청, API 호출 등 대기시간이 긴 작업)- FastAPI는 내부적으로 이벤트루프를 관리하므로 따로 asyncio.run()을 쓰지 않아도 됨* def로 정의된 엔드포인트는 기존의 동기 방식으로 실행됨 (이벤트 루프를 사용X, CPU 작업 최적화), 스레드풀에서 실행a- 멀티스레드 기반 처리(ThreadPoolExecutor에서 실행)- 관련 함수비동기 기능설명async def비동기 함수 선언await비동기 함수 호출 시 사용asyncio.run()비동기 함수 실행asyncio.gather()여러개의 비동기 작업 병렬 실행asuncio.create_task..
1. FastAPI란?- python으로 작성된 최신 웹 프레임워크- 비동기 프로그래밍을 지원해 빠르고 효과적- 자동 문서화 기능(Swagger): API를 설계하고 문서화하는 도구와 프레임워크의 기능(API테스트, 문서화)=> API 사용법을 이해하고 테스트하는데 시간을 절약할 수 있다. - 데이터 검증: 클라이언트가 잘못된 데이터를 보냈을 경우, 개발자가 추가 코드를 작성하지 않아도 FastAPI가 에러를 처리=> 안정성을 보장하고 개발 시간을 단축- 타입 힌팅: 변수나 함수의 타입을 지정할 수 있는 기능 => 가독성과 명확성을 높임- FastAPI를 사용하면 RESTful API를 쉽게 구현할 수 있다=> 데코레이터(@app.get)를 사용하면 간단히 HTTP메서드와 경로를 정의할 수 있어 직관적이..
- Total
- Today
- Yesterday
- 오픽
- 습관
- llm
- 기초
- 뉴스
- C언어
- 스크랩
- ChatGPT
- Python
- 티스토리챌린지
- 경제
- 빅데이터 분석기사
- 루틴
- 영어회화
- SQL
- 줄넘기
- 아침운동
- 고득점 Kit
- opic
- 아침
- 오블완
- 실기
- 다이어트
- 갓생
- 30분
- 미라클모닝
- 운동
- 프로그래머스
- IH
- Ai
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |