http://members.verizon.net/olsongt/stackless/why_stackless.html

stackless python 은 일반 파이썬에 코루틴의 개념을 첨가한 것이다.

코루틴(coroutine)은 루틴은 루틴인데 서브루틴과 다른 성질을 가진 개념이다.

서브루틴(subroutine) 은 어떤 한 코드에서 호출되어 어떤 일을 수행하고, 다시 원래의 코드로

돌아가는 구조의 루틴을 말한다. c나 파스칼의 함수를 비롯하여 대부분의 함수나 프로시저는

서브루틴의 특성을 갖고 있다. 원래로 돌아가는 특성을 가장 효율적으로 표현하기 위해서

서브루틴에서는 로컬 변수를 스택에 담아놓는다. 스택이란 자료구조를 이용하여 함수에 재귀성을

부여할 수 있고, 효율적인 메모리 관리를 할 수 있다.

서브루틴은 호출하는 측과 호출받는 측의 상하관계가 명백하다.


반면, 코루틴은 호출하는 쪽과 호출받는 측이 상하관계로 이뤄진 것이 아니라, 대등한 수준에서

동작하는 각각의 루틴이다. 그래서 코루틴은 스택 자료구조를 이용해서 만들 수 없다. 파이썬에

코루틴 개념을 넣은 프로젝트가 stackless python 이란 이름이 된 이유도 그 때문이다.


imcgames 의 김학규입니다