다음 코드를 보자
def add(a, b):
c = a + b
print(c)
print("add 함수")
def calc():
add(1, 2)
print("calc 함수")
calc()
여기서 calc가 메인 루틴(main routine)이면 add가 calc의 서브 루틴(sub routine)이다. 메인 루틴과 서브루틴의 동작 과정은 이런 모양이다.

메인 루틴에서 서브 루틴을 호출하면 서브 루틴의 코드를 실행한 뒤 다시 메인 루틴으로 돌아온다. 특히 서브 루틴이 끝나면 서브 루틴의 내용은 모두 사라진다. 즉, 서브 루틴은 메인 루틴에 종속된 관계이다.
하지만 코루틴은 방식이 조금 다른다. 코루틴(coroutine)은 cooperative routine을 의미하는데 서로 협력하는 루틴이라는 뜻이다. 이는 메인 루틴과 서브 루틴이 서로 종속된 관계가 아니라 대등한 관계임을 뜻하고 특정 시점에서 상대방의 코드를 실행하게 된다.
