나는 특히 Python의 C-API에서 continuations에 관심이 있습니다. 내가 이해하는 바에 따르면, 연속성은 필요에 따라 호출 스택을 조작하기 위해 저수준 호출 규칙을 추상화해야합니다. 나는이 흩어져있는 here과 there의 몇 가지 예를 발견 할만큼 충분히 운이 좋았습니다. 몇 가지 예를 들자면,이 추상화는 영리한 C (환경에 대한 가정 포함) 또는 사용자 정의 어셈블리를 사용하여 수행됩니다.연속적인 PyFrameObject를 인풋과 아웃으로 전환 할 수 있습니까?
그러나 파이썬에 대한 멋진 점은 PyFrameObject
으로 구성된 자체 인터프리터 스택이 있다는 것입니다. 이제는 단일 스레드 응용 프로그램을 가정 할 때 은 파이썬의 C-API에서 연속을 구현하기 위해 인출하기 위해 PyFrameObjects
을 스위치하는 것만으로 충분하지 않아야합니까? 왜이 저자들은 저급의 것을 다루는가?
저는 정말로 대답 할 수 없지만 최적화가 떠오릅니다. 좋은 질문! – ThinkChaos
프레임 객체를 교환하는 것은 기본적으로 생성기 기능이 작동하는 방식입니다. 'yield'를 누르면 현재 프레임 오브젝트가 생성기에 저장되고 스택에서 팝됩니다. 다음 값이 필요할 때, 프레임 객체는 스택에 푸시 백되고 실행은 중단 된 곳에서 계속 실행됩니다. –