파이썬에서의 비동기 처리

파이썬에서의 비동기 처리

이 글은 파이썬에서의 비동기 처리에 대해 설명합니다.

파이썬의 async/awaitasyncio 모듈의 기본 활용법에 대한 코드 예제를 배울 수 있습니다.

YouTube Video

파이썬에서의 비동기 처리

파이썬의 비동기 처리는 파일 읽기 및 쓰기, 네트워크 통신과 같은 시간이 오래 걸리는 I/O 작업을 효율적으로 처리하기 위한 메커니즘입니다. 동기 처리에서는 현재 작업이 끝날 때까지 다음 작업이 대기하지만, 비동기 처리에서는 대기 시간 동안 다른 작업을 진행할 수 있습니다. 파이썬에서는 비동기 처리를 위해 asyncio 모듈이 제공됩니다. 여기서는 비동기 처리의 기본 요소와 사용 방법을 단계적으로 설명하겠습니다.

기본 구문

비동기 처리의 중심에는 코루틴이라고 불리는 함수가 있습니다. async 함수는 비동기 함수를 정의하며, await는 해당 함수 내에서 비동기 작업을 대기하는 데 사용됩니다.

 1import asyncio
 2
 3async def say_hello():
 4    print("Hello")
 5    await asyncio.sleep(1)
 6    print("World")
 7
 8if __name__ == "__main__":
 9    # Execute asynchronous task
10    asyncio.run(say_hello())
  • 위 코드에서 say_hello 함수는 비동기 작업으로 정의되어 있습니다. 1초 동안 sleep()으로 대기하는 동안 다른 비동기 작업이 실행될 수 있습니다.

여러 작업 실행하기

asyncio 모듈의 gather 함수를 사용하면 여러 작업을 동시에 실행할 수 있습니다.

 1import asyncio
 2
 3async def task1():
 4    print("Task 1 started")
 5    await asyncio.sleep(2)
 6    print("Task 1 completed")
 7
 8async def task2():
 9    print("Task 2 started")
10    await asyncio.sleep(1)
11    print("Task 2 completed")
12
13async def main():
14    await asyncio.gather(task1(), task2())
15
16if __name__ == "__main__":
17    asyncio.run(main())
  • 이 예제에서는 task1task2가 동시에 실행됩니다. 결과적으로, 두 작업 중 task2가 먼저 완료되지만 전체 실행 시간은 가장 오래 걸리는 작업의 실행 시간과 같습니다.

오류 처리

비동기 처리에서도 오류 처리는 중요합니다. 표준 try-except 구문을 사용하여 오류를 잡고 처리할 수 있습니다.

 1import asyncio
 2
 3async def faulty_task():
 4    raise Exception("An error occurred")
 5
 6async def main():
 7    try:
 8        await faulty_task()
 9    except Exception as e:
10        print(f"Caught an error: {e}")
11
12if __name__ == "__main__":
13    asyncio.run(main())
  • 이 코드는 비동기 함수 내부에서 발생하는 예외를 try-except로 포착하고, 오류 메시지를 안전하게 처리하는 방법을 보여줍니다. faulty_task에서 발생한 예외는 main 함수 내에서 포착되어 적절히 출력됩니다.

요약

파이썬의 비동기 처리는 async / awaitasyncio를 사용하여 I/O를 기다리는 동안 다른 작업을 동시에 실행할 수 있어 효율적인 처리가 가능합니다. 여러 작업의 동시 실행과 비동기 I/O를 활용하면 성능을 크게 향상시킬 수 있습니다. 또한 일반적인 try-except와 같이 오류를 처리할 수 있으므로 비동기 코드를 안전하게 실행할 수 있습니다.

위의 기사를 보면서 Visual Studio Code를 사용해 우리 유튜브 채널에서 함께 따라할 수 있습니다. 유튜브 채널도 확인해 주세요.

YouTube Video