상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
유닉스 시간을 사용하여 시간 기반의 통계를 생성하는 방법은 무엇인가요?
구글 클라우드에서 로그 관리는 어떻게 하나요?
구글 클라우드의 Cloud Armor는 어떤 보안 기능을 제공하나요?
구글 클라우드의 Cloud Scheduler에서 작업을 예약하는 방법은?
타이완의 '치킨 쌀국수'는 어떤 맛이 나나요?
롯데리아에서 제공하는 디저트는 무엇이 있나요?
롯데리아의 위생 관리 기준은 어떻게 되나요?
서비스 계정의 키를 사용하여 Cloud Functions의 인증을 설정하는 방법은?
전체주의 국가에서의 경제적 통제는 어떻게 이루어지는가?
전체주의 체제에서의 사회적 불만은 어떻게 표현되는가?
랍스터의 주요 천적은 무엇인가요?
랍스터의 크기는 어떻게 측정하나요?
Previous
Next
수정하기 - Python의 asyncio 라이브러리는 어떻게 사용하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
`<a href='https://sangseek.com/sangseeks/asyncio/ko'>asyncio</a>`는 Python의 표준 라이브러리로, 비동기 프로그래밍을 지원합니다. 비동기 프로그래밍은 I/O 작업(예: 파일 읽기/쓰기, 네트워크 요청 등)을 수행할 때, 작업이 완료될 때까지 기다리지 않고 다른 작업을 수행할 수 있게 해줍니다. 이를 통해 프로그램의 성능을 향상시키고, 특히 I/O 바운드 작업에서 효율성을 높일 수 있습니다. 기본 개념 1. 코루틴(Coroutine) : `async def`로 정의된 함수로, 비동기적으로 실행될 수 있습니다. 코루틴은 `await` 키워드를 사용하여 다른 코루틴의 실행을 기다릴 수 있습니다. 2. 이벤트 루프(Event Loop) : 비동기 작업을 관리하고 실행하는 메인 루프입니다. `asyncio`는 이벤트 루프를 통해 코루틴을 스케줄링하고 실행합니다. 3. 태스크(Task) : 코루틴을 래핑하여 이벤트 루프에 등록할 수 있는 객체입니다. 태스크는 코루틴의 실행 상태를 추적하고, 완료되면 결과를 반환합니다. 4. 퓨처(Future) : 비동기 작업의 결과를 나타내는 객체입니다. 작업이 완료되면 결과를 가져올 수 있습니다. 기본 사용법 다음은 `asyncio`를 사용하는 기본적인 예제입니다. ```python import asyncio async def say_hello(): print("Hello") await asyncio.sleep(1) 1초 동안 대기 print("World") async def main(): await say_hello() 이벤트 루프 실행 asyncio.run(main()) ``` 위 코드에서 `say_hello` 함수는 비동기 함수로, "Hello"를 출력한 후 1초 동안 대기하고 "World"를 출력합니다. `main` 함수에서 `say_hello`를 호출하고, `asyncio.run()`을 통해 이벤트 루프를 실행합니다. 여러 코루틴 동시에 실행하기 `asyncio.gather()`를 사용하면 여러 코루틴을 동시에 실행할 수 있습니다. ```python import asyncio async def task(name, delay): print(f'Task {name} started') await asyncio.sleep(delay) print(f'Task {name} completed') async def main(): await asyncio.gather( task("A", 2), task("B", 1), task("C", 3) ) asyncio.run(main()) ``` 위의 예제에서는 `task`라는 코루틴을 정의하고, `asyncio.gather()`를 사용하여 동시에 여러 작업을 실행합니다. 각 작업은 지정된 시간만큼 대기한 후 완료 메시지를 출력합니다. 비동기 I/O 작업 `asyncio`는 비동기적으로 파일을 읽거나 네트워크 요청을 처리하는 데 유용합니다. 예를 들어, `aiohttp` 라이브러리를 사용하여 비동기 HTTP 요청을 수행할 수 있습니다. ```python import asyncio import aiohttp async def fetch(url): async with aiohttp.ClientSession() as session: async with session.get(url) as response: return await response.text() async def main(): url = 'https://www.example.com' html = await fetch(url) print(html) asyncio.run(main()) ``` 위 코드에서는 `aiohttp`를 사용하여 비동기적으로 웹 페이지를 가져옵니다. `fetch` 함수는 URL을 받아 HTTP GET 요청을 보내고, 응답을 텍스트로 반환합니다. 예외 처리 비동기 코드에서도 예외 처리가 가능합니다. `try`/`except` 블록을 사용하여 코루틴 내에서 발생할 수 있는 예외를 처리할 수 있습니다. ```python async def risky_task(): await asyncio.sleep(1) raise ValueError("Something went wrong!") async def main(): try: await risky_task() except ValueError as e: print(f"Caught an exception: {e}") asyncio.run(main()) ``` 결론 `asyncio`는 Python에서 비동기 프로그래밍을 위한 강력한 도구입니다. 비동기 코드를 작성하면 I/O 바운드 작업의 성능을 크게 향상시킬 수 있습니다. 코루틴, 이벤트 루프, 태스크, 그리고 비동기 I/O 작업을 통해 효율적인 프로그램을 작성할 수 있습니다. `asyncio`의 다양한 기능을 활용하여 복잡한 비동기 작업을 효과적으로 처리할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기