python asyncio 3

[python] 비동기 IO에서 코루틴과 태스크의 차이점은?

파이썬 비동기 I/O (AsyncIO)에서 코루틴(Coroutine) 과 태스크(Task) 는 밀접하게 관련되어 있지만, 명확한 차이가 있습니다. 이 둘의 관계를 이해하는 것이 AsyncIO를 효과적으로 사용하는 데 중요합니다.코루틴 (Coroutine)정의: 코루틴은 async def 키워드로 정의된 함수입니다. 일반 함수와 달리, 코루틴은 실행 중에 일시 중단(suspend)되었다가 나중에 중단된 지점부터 다시 시작할 수 있습니다.특징await 키워드를 사용하여 다른 코루틴의 실행이 완료될 때까지 기다릴 수 있습니다. await는 I/O 작업(네트워크 요청, 파일 읽기/쓰기 등)이 완료될 때까지 블로킹 없이 기다리게 해주어, 그동안 다른 코루틴이 실행될 수 있도록 제어권을 이벤트 루프에 반환합니다.a..

[python] asyncio.gather() 함수와 asyncio.wait() 함수의 차이는?

asyncio.gather()와 asyncio.wait()는 모두 여러 코루틴(또는 태스크)을 동시에 실행하고 그 결과를 기다리는 데 사용되는 asyncio 라이브러리의 핵심 함수입니다. 하지만 동작 방식과 사용 목적에 있어서 중요한 차이점이 있습니다.asyncio.gather(*aws, return_exceptions=False)목적: 여러 개의 awaitable 객체(코루틴, 태스크, 퓨처 등)를 그룹으로 묶어 함께 실행하고, 모든 awaitable이 완료될 때까지 기다린 후 그 결과를 수집합니다.반환 값: 모든 awaitable의 결과가 담긴 리스트를 반환합니다. 이 리스트의 순서는 입력된 awaitable의 순서와 동일합니다.예외 처리기본적으로 return_exceptions=False입니다. 이..

[python] asyncio로 비동기 코루틴으로 두 개중 하나가 종료되면, 나머지도 종료하기

비동기 코루틴 두 개 중 하나라도 완료되면 나머지 태스크를 종료하고 프로그램이 종료되도록 하려면 asyncio.wait와 asyncio.FIRST_COMPLETED를 사용하고, 완료되지 않은 태스크를 취소하는 로직을 추가해야 합니다.다음은 이를 구현한 예제 코드입니다.import asyncioasync def task_one(): print("Task One: 시작") try: await asyncio.sleep(3) # 3초 대기 print("Task One: 완료") return "Task One 완료됨" except asyncio.CancelledError: print("Task One: 취소됨") raiseasync ..

728x90