일반함수를 비동기 코루틴화하는 데코레이터 만들기

지난 글에서 urlopen()과 같은 표준 라이브러리 함수를 어떻게 비동기 코루틴처럼 asyncio에서 사용할 수 있는지 살펴보았다. aiohttp 등의 비동기 라이브러리를 사용해서 여러 핸들러를 작성해야 할 때, 이와 같은 처리를 많이 해야 한다면 빈번하게 런루프 메소드를 호출하는 것보다, 간단히 데코레이터를 만들어서 활용하는 것이 어떨까? 무엇이 되었든 파이썬 함수는 인자를 받고 결과를 내보내는 구조로 되어 있다. ( (*args,

yield from – 다른 제너레이터에게 작업을 위임하기

제너레이터 내부에서 yield 가 쓰일 때, .send() 통해서 내부로 전달된 값으로 평가될 수 있다고 하였다. 만약, 해당 제너레이터/코루틴이 매 입력을 직접 처리하지 않고 다른 제너레이터에게 일부 작업을 위임할 필요가 있다면 yield from 이라는 새로운 문법을 사용할 수 있다. 이 문법을 사용할 경우 다음과 같이 처리된다. yield from sub_generator()의 형태로 쓰인다. 부모 제너레이터의 send(x) 가 호출되면

[Python] 제너레이터와 코루틴

파이썬 제너레이터는 특별한 함수 객체로, yield 구문을 통해서 특정 값을 리턴한 후에도 제거되지 않고 방금 리턴한 그 자리에서부터 이어서 계산을 반복하고 다시 값을 내놓을 수 있다. 파이썬 2.5에서 제너레이터에 특별한 기능이 생겼는데, 바로 제너레이터 속으로 값을 전달하는 기능이다. (PEP342) 이는 매우 흥미로운 패턴으로 이어지게 되는데, 자신의 위치를 기억하고 있다가 다시 그 자리에서 실행이 가능한 제너레이터의