저는 파이썬을 실험하는데 흥미가 있습니다. frame.f_locals
과 frame.f_globals
을 사용하여 로컬 변수와 글로벌 변수를 검사하고 주입 할 수 있다는 것을 알고 있지만 이제 전체 호출 스택을 생성하는 것이 가렵습니다.파이썬 전체 호출 스택을 다시 생성 할 수 있습니까?
스택 정보를 변경하지 못하게하는 이유는 파이썬이 나를 변경할 수 없도록한다는 사실입니다.
실제로 스택을 감아 시뮬레이션하기 위해 사용하고있는 파이썬 모듈을 프로그래밍 방식으로 변환하는 것으로 간주했습니다. 그러나 나는 클라이언트 코드 사용이 if
, while
, with
및 try
일 때 쉽게 내 코드를 손상시킬 수 있기 때문에 이것이 끔찍한 해결책이라는 것을 알고 있습니다.
나는 또한 frame.f_back
을 조작하는 것을 보았으므로 아무 소용이 없습니다. 읽기 전용입니다. 내가 실험으로
을 할 노력하고있어 무엇
>>> import sys
...
... frm = sys._getframe()
...
... frm.f_back = None
Traceback (most recent call last):
File "<pyshell#4>", line 5, in <module>
frm.f_back = None
TypeError: readonly attribute
, 내가 네트워크를 통해 fork()
을 구현하기 위해 노력하고있어.
stackless python이 내가 원하는 것을 가지고 있을지도 모르지만, frame.f_back
속성을 변경하는 것은 여전히 불가능합니다.
봐야한다. 프로그램이 상태를 캡처 할 수 있도록 설계하지 않는다면, 이것은 파이썬의 동적 특성으로는 불가능한 작업입니다. –
이것은 인터프리터 자체를 수정 한 경우에만 가능할 수 있습니다. –
C 확장을 작성할 생각입니다. –