본문 바로가기
프로그래밍/파이썬

파이썬 비동기 호출

by -현's- 2025. 4. 30.
반응형

●비동기 호출(Async)

작업 중 기다리는 동안 다른 걸 처리할 수 있습니다.

단일 스레드에서 여러 작업을 빠르게 번갈아 가며 처리하는 방식입니다.

 

●동기 호출(Sync)

한 번에 하나만 처리하는 방식입니다. 하나의 작업이 완료될 때까지 대기합니다.

 

●병렬 실행

여러 작업을 여러개의 스레드가 동시에 처리하는 방식입니다.

비동기 실행과는 다른 개념입니다.

반응형

●비동기 호출 특징

대기 시간이 많은 작업에 효율적입니다.(API호출, DB처리, 파일 입출력 등)

다만, 코드가 복잡해지고 async/await, task, loop 개념을 알아야 하고 적절하게 사용해야 합니다.

실행순서를 예측하기 힘들어 디버깅이 힘들 수 있습니다.

필요한 부분만 async로 사용하는 것이 좋습니다.

대기가 생기는 작업은 주로 외부와 연결된 작업입니다.

네트워크 요청, 파일 입출력, db처리, sleep 등을 처리할때 비동기로 처리합니다.

 

●FastApi

파이썬에서 많이 사용하는 비동기 웹 프레임워크입니다.

빠르고 가볍게 API서버를 만들 수 있습니다.

동기,비동기 함수 모두 만들 수 있습니다.

from fastapi import FastAPI
from inference import load_model, predict_image

app = FastAPI()
model = load_model()

#동기함수
@app.post("/predict/")
def predict(image: UploadFile):
    result = predict_image(model, image)
    return {"result": result}

uvicorn main:app --host 0.0.0.0 --port 8000

from fastapi import FastAPI

app = FastAPI()

#비동기 함수
@app.get("/hello")
async def hello():
    await asyncio.sleep(1)
    return {"message": "hello"}

 

 

반응형

댓글