Python

Python/FastAPI

FastAPI 서버 구축의 핵심, Uvicorn과 Gunicorn의 동작 원리 및 스레드 풀 이해하기

UvicornUvicorn은 ASGI(Asynchronous Server Gateway Interface) 표준을 구현한 서버이다. FastAPI로 짜인 코드는 단독으로 실행은 되지만, 웹 API로써는 동작할 수 없다.from fastapi import FastAPIapp = FastAPI()@app.get("/")async def root(): return {"message": "Hello World"} # python main.py // 바로 종료됨 main.py 코드가 서버를 실행시키는 코드가 아니며, 위 코드는 FastAPI app 인스턴스를 만들고 라우터를 등록하는 코드이다. HTTP 요청을 받아 FastAPI 인스턴스에게 전달하고 데이터를 받아 HTTP 응답을 제공하는 서버의 역할을 하..

Python/Python

파이썬 멀티스레딩 완전 정복: ThreadPoolExecutor와 as_completed 이해하기

멀티스레딩이란,하나의 프로세스 안에서 여러 개의 스레드를 실행하여 동시에 작업을 처리하는 방식 파이썬은 GIL(Global Interpreter Lock) 때문에 CPU 연산이 많은 작업에서는 멀티스레딩의 성능 향상이 크지 않다.하지만, I/O 작업에서는 스레드가 쉬지 않고 일하게 할 수 있어 효율을 높일 수 있다. Thread Pool: ThreadPoolExecutorfrom concurrent.futures import ThreadPoolExecutorimport timeimport threadingdef task(n): thread_name = threading.current_thread().name print(f"작업 {n} 시작 - 스레드: {thread_name} - 시간: {ti..

Python

Python defaultdict: 딕셔너리 기본값 자동 설정 및 활용법

defaultdict()dict 클래스의 서브 클래스로, 기본값을 지정할 수 있는 딕셔너리입니다.num, list, set 등으로 초기화할 수 있습니다.from collections import defaultdict defaultdict(int)int_dict = defaultdict(int)print(int_dict)print(int_dict["test"])# defaultdict(, {})# 0 처음 키를 지정할 때 값을 설정하지 않아도, 해당 Key에 대한 값을 Default로 설정할 수 있다.특정 값의 카운팅을 처리할 때 용이하다.char_count = defaultdict(int)for char in s: char_count[char] += 1 # key가 없어도 자동으로 0에서 시작 d..

Python/Python

파이썬 all()과 any() 함수 이해하기: 조건 체크와 논리 연산

all파이썬의 all(x) 내장 함수는 반복 가능한 데이터(iterable) x를 입력 값으로 받으며 이 x의 요소가 모두 참이면 True, 거짓이 하나라도 있으면 False를 리턴합니다.print(all([1,2,3]))# Trueprint(all([0,1,2,3]))# False이를 응용해서 리스트에 있는 값이 모두 참인지 확인할 수 있다.### 5*5 배열에서 빙고 여부 확인하기# 세로에 있는 값이 모두 0인지for i in range(5): if all(arr[j][i] == 0 for j in range(5)): tmp += 1# (0, 0) -> (4, 4) 대각선이 모두 0인지if (all(arr[i][i] == 0 for i in range(5))): tmp += 1all() 함수..

kylo
'Python' 카테고리의 글 목록