본문 바로가기

asyncio

Python : Asyncio 비동기 프로그래밍 - 웹스크래핑 두가지 방법 지금까지 asyncio 를 사용한 비동기 프로그래밍에 대해서 알아보았습니다.  asyncio 를 사용하여 자주 구현되는 웹스크래핑 예제를 알려드리고자 합니다. aiohttp 를 사용한 웹스크래핑 이미 지난 블로그에서 소개해드렸던 방법입니다. aiohttp를 사용하면 HTTP 기반의 비동기 IO 작업을 손쉽게 작성할 수 있습니다.import asynciofrom time import timeimport aiohttp# 크롤링할 웹사이트 목록urls = [ "https://www.naver.com", "https://www.daum.net", "https://www.tistory.com/", "https://www.google.com"]# 세션에서 URL을 호출하여 응답을 받아오는 함수.. 더보기
Python : Event_loop - 동기작업을 비동기로 처리하기 Event_loop의  run_in_executor는 CPU 바운드 작업 또는 비동기 지원이 되지 않는 작업을 비동기적으로 처리하기 위해 asyncio에서 제공하는 메서드입니다. 비동기 함수로 전환할 수 없는 함수(예: 블로킹 I/O 작업, 복잡한 계산 작업 등)를 별도의 스레드나 프로세스에서 실행하고, 이벤트 루프는 다른 비동기 작업을 계속 실행할 수 있게 합니다. run_in_executor의 기본 사용법 run_in_executor는 다음과 같이 사용할 수 있습니다:await loop.run_in_executor(executor, blocking_func, *args)loop: 이벤트 루프 객체입니다.executor: concurrent.futures.ThreadPoolExecutor 또는 Proc.. 더보기
Python : asyncio event_loop 이해하기 Python의 이벤트 루프(event loop)는 비동기 프로그래밍의 핵심 메커니즘으로, 비동기 작업들이 순차적으로 실행되도록 관리하는 구조입니다. 이벤트 루프는 하나의 작업이 끝나기를 기다리지 않고, 다른 작업을 수행하며 효율적으로 실행 시간을 관리합니다. 이 메커니즘은 특히 네트워크 요청, 파일 입출력 같은 I/O 바운드 작업에서 성능을 높이기 위해 유용합니다. Python의 asyncio 모듈이 이벤트 루프의 주요 기능을 제공하며, 이를 통해 비동기 작업을 생성하고 관리할 수 있습니다. 이벤트 루프 이해하기Python의 이벤트 루프는 비동기 작업을 처리하고 콜백 함수, 네트워크 소켓, 파일 입출력 같은 이벤트들을 감시하며 적절한 시점에 해당 작업을 수행합니다. asyncio의 get_event_lo.. 더보기
Python : asyncio의 기본 개념, 주요 구성 요소, 예제 asyncio는 파이썬의 비동기 프로그래밍을 위한 표준 라이브러리로, 비동기 입출력(I/O) 작업을 효율적으로 처리하고 동시성을 관리할 수 있게 해줍니다. asyncio는 특히 파일 입출력, 네트워크 요청, 데이터베이스 쿼리 같은 I/O 바운드 작업에 적합하며, CPU를 차지하지 않고 여러 작업을 동시에 수행할 수 있도록 돕습니다. 아래에서 asyncio의 기본 개념, 주요 구성 요소, 예제, 그리고 비동기 프로그래밍의 장점에 대해 살펴보겠습니다.  1. asyncio의 개념asyncio는 이벤트 루프(Event Loop)를 중심으로 비동기 작업을 관리합니다. 이벤트 루프는 코루틴을 실행하고 중단 지점(예: await)에서 다른 작업으로 전환하여 여러 작업이 마치 동시에 실행되는 것처럼 동작하도록 합니다.. 더보기
Python : async, await 개념, 사용방법 예제 async와 await는 파이썬의 비동기 프로그래밍에서 사용하는 키워드로, 비동기 함수를 정의하고 실행을 중단하거나 재개하는 데 사용됩니다. 이 두 키워드를 사용하면 코드가 비동기적으로 실행되면서도 가독성을 유지할 수 있습니다. 아래에서 async와 await의 개념, 사용 방법, 예제를 통해 자세히 설명하겠습니다. 1. async 키워드async는 비동기 함수 또는 코루틴을 정의할 때 사용합니다. async def로 정의된 함수는 호출될 때 즉시 실행되지 않고, 코루틴 객체를 반환합니다. 이 코루틴 객체는 await을 사용하거나 이벤트 루프를 통해 실행할 수 있습니다. async def example_coroutine(): print("비동기 함수 시작") await asyncio.sleep.. 더보기