반응형
●비동기 호출(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"}
반응형
'프로그래밍 > 파이썬' 카테고리의 다른 글
파이썬(Python) - 33.클래스(2) (0) | 2020.05.07 |
---|---|
파이썬(Python) - 32.클래스(1) (0) | 2020.05.07 |
파이썬(Python) - 31.모듈 만들기 (0) | 2020.05.07 |
파이썬(Python) - 30.pip, 셀레니움, webdriver 설치하기 (0) | 2020.05.01 |
파이썬(Python) - 29.외부모듈 (0) | 2020.05.01 |
댓글