我很想嘗試python。我知道我可以檢查並使用frame.f_locals
和frame.f_globals
將局部和全局變量注入到框架中,但我現在很想創建一個完整的調用堆棧。Python是否可以重新創建整個調用堆棧?
什麼阻止我改變堆棧信息是因爲python不允許我改變它。
我實際上已經考慮通過編程來轉換我正在使用的python模塊,以便模擬堆棧。但我知道這是一個可怕的解決方案,因爲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
屬性。
還有更多的比你的堆棧跟蹤直接看到Python解釋器的狀態。除非你設計一個程序來捕捉它的狀態,否則這是Python不可或缺的任務,具有python的動態特性。 – 2013-03-03 10:15:15
這可能只有在您修改解釋器本身時纔有可能。 – 2013-03-03 10:24:14
我想寫一個C擴展。 – 2013-03-03 10:24:31