python coroutine
Programming/Python2017. 2. 13. 23:01
기본적으로 프로그램에서는 메인루틴과 서브루틴이 존재한다.
메인루틴은 프로그램에서 주축이 되는 부분으로서, c나 java에서의 main함수가 메인루틴의 역할을 수행한다고 생각하면 쉽다.
서브루틴은 메인루틴에서 호출되는 함수들을 말한다. 서브루틴을 호출하면, 메인루틴은 대기상태에 들어가고, 서브루틴이 종료되면 메인루틴은 다시 코드를 수행한다.
하지만 coroutine은 서브루틴과 다르게 대기상태가 존재한다. 즉, 종료되지 않은 채 수행권한을 메인루틴에 넘길 수 있다.
python에서 함수에 yield라는 키워드가 사용되는 이는 generator function이 된다. 여기서 generator function은 coroutine처럼 대기상태가 존재하는 함수이다.
그렇지만 generator와 coroutine 함수를 서로 같은 것으로 보기에는 어렵다.
왜냐하면, generator function과는 다르게 coroutine은 외부로부터 데이터를 전달받는 기능이 있기 때문이다.
즉, coroutine은 상태 정보를 호출 시마다 주고받을 수 있다는 점에서 generator function과 다르다.
'Programming > Python' 카테고리의 다른 글
python thread (0) | 2017.02.19 |
---|---|
python decorator (0) | 2017.02.13 |
python closure (0) | 2017.02.13 |
python lambda 표현식 (0) | 2017.02.13 |
python 가변 매개변수 (0) | 2017.02.13 |