Python 비동기 프로그래밍

Sue·2025년 6월 6일
0
post-thumbnail

async defawait는 Python의 비동기 프로그래밍을 구성하는 핵심 개념으로 개념을 정리하려고 한다.

기본 개념: 동기 vs 비동기

🔸 동기(Synchronous)

  • 코드가 한 줄씩 차례대로 실행됩니다.
  • 이전 작업이 끝나야 다음 작업이 시작됩니다.

예:

print("A")
time.sleep(3)
print("B")

위 코드는 "A" 출력 → 3초 대기 → "B" 출력 순서대로 실행됩니다.

🔸 비동기(Asynchronous)

어떤 작업이 끝날 때까지 기다리지 않고, 다른 작업을 먼저 처리할 수 있게 합니다.

주로 네트워크 요청, 파일 I/O, 대기 시간이 긴 작업에서 사용합니다.

✅ async def: 비동기 함수 정의

async def say_hello():
    return "Hello"

async def는 이 함수가 비동기 함수임을 선언합니다.

일반 함수처럼 호출할 수 없고, await와 함께 사용해야 결과를 얻을 수 있습니다.

✅ await: 비동기 함수 실행을 기다리기

message = await say_hello()

await는 비동기 함수의 결과가 준비될 때까지 기다리는 키워드입니다.

await는 반드시 비동기 문맥(예: async def 안)에서만 사용할 수 있습니다.

✅ 예시: 동기 vs 비동기 비교

📍 동기 코드 예시

import time

def main():
    print("Start")
    time.sleep(3)
    print("End")

main()

실행 결과: Start → 3초 대기 → End

📍 비동기 코드 예시

import asyncio

async def main():
    print("Start")
    await asyncio.sleep(3)
    print("End")

asyncio.run(main())

실행 결과는 동일하지만, 이 코드는 비동기적으로 대기합니다.

await asyncio.sleep(3)는 CPU를 차지하지 않고 대기 상태에 들어갑니다.

✅ 정리

개념설명
async def비동기 함수를 정의할 때 사용
await비동기 함수나 작업의 결과가 준비될 때까지 기다림
asyncio.run()비동기 함수 실행을 위한 진입점 (Python 3.7+)
비동기 처리의 장점느린 작업(I/O 등) 동안 CPU를 놀리지 않고 다른 작업을 처리 가능

✅ 실생활 비유

📞 동기 방식: 친구한테 전화해서 응답을 기다릴 때까지 아무것도 못 함
📨 비동기 방식: 문자 보내놓고 답 올 때까지 다른 일 하다가 나중에 확인

profile
AI/ML Engineer

0개의 댓글