Python 썸네일형 리스트형 Python : 데코레이터 정의, 장단점 및 예제 1. Python 데코레이터란 무엇인가?Python 데코레이터는 함수나 메서드를 감싸서 동작을 수정하거나 확장할 수 있는 강력한 도구입니다. 데코레이터는 또 다른 함수를 반환하는 함수로, 주로 @ 표기법을 사용해 함수나 클래스에 적용됩니다. 주요 개념:동작 확장: 기존 코드를 수정하지 않고 새로운 기능을 추가합니다.재사용성: 중복된 로직을 데코레이터로 분리하여 여러 곳에서 재사용 가능합니다.클린 코드: 로직을 분리하여 코드 가독성을 높입니다.예제def my_decorator(func): # 대상함수를 입력값으로 받음 def wrapper(*args): # 대상함수의 입력파라미터를 내부함수를 통해 받음 print("함수 호출 전 작업") func(*args) # 대상함수 호출.. 더보기 Python : 클로저(Closure)에 대한 모든 것 클로저(Closure)는 자신이 선언될 당시의 환경(context)을 기억하는 함수를 말합니다. 클로저는 함수 내부에서 정의된 함수가 외부 함수의 변수에 접근할 수 있는 기능을 제공합니다. 이러한 구조는 데이터 은닉(data hiding)이나 상태 유지(state retention)가 필요할 때 유용하며, 특히 고급 함수형 프로그래밍에서 자주 사용됩니다.데이터 은닉: 외부에서 접근할 수 없는 데이터 캡슐화를 가능하게 합니다.상태 유지: 외부 함수가 종료된 이후에도 변수 상태를 유지할 수 있습니다.코드 간결화: 재사용성과 간결성을 높이는 패턴을 제공합니다.변수의 범위클로저를 이해하기 위해서는 먼저 변수의 범위에 대하여 알고 있어야 합니다. 파이썬에서 변수의 범위는 LEGB 규칙을 따릅니다:Local: 함.. 더보기 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 : Async With - 비동기 컨텍스트 관리자 와 aiohttp 사용가이드 async with는 비동기 컨텍스트 관리자로, 비동기 작업 내에서 자원을 안전하게 관리하고 정리할 수 있도록 돕는 구문입니다. 일반적인 with 문과 유사하지만, 비동기 I/O 작업과 호환되도록 설계되었습니다. 이를 통해 파일이나 네트워크 연결 같은 리소스를 효율적으로 다루면서, 자동으로 리소스를 열고 닫아주는 관리 기능을 제공합니다. 아래 예제는 async with 없이 aiohttp 를 사용하는 예제입니다. aiohttp 는 Python에서 비동기 HTTP 클라이언트와 서버를 쉽게 구현할 수 있도록 지원하는 패키지입니다.Async With 없이 구현된 예제import aiohttpimport asyncioasync def fetch_data(url): session = aiohttp.Cli.. 더보기 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.. 더보기 이전 1 2 3 다음