3

Pythonの実験に興味があります。frame.f_localsとを使用してローカル変数とグローバル変数を検査してフレームに挿入できることはわかっていますがframe.f_globals、現在、完全な呼び出しスタックを作成したいと思っています。

スタック情報を変更することを妨げているのは、Pythonではスタック情報を変更できないという事実です。

スタックの巻き上げをシミュレートするために、使用しているPythonモジュールをプログラムで変換することを実際に検討しました。しかし、クライアントコードで、、を使用するとコードが簡単に壊れてしまうため、これはひどい解決策であることに気づいifwhilewithます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()ネットワーク全体に実装しようとしています。

スタックレスPythonが私が望むものを持っているかもしれないことを私は知っていますが、それでもframe.f_back属性を変更することは不可能です。

4

3 に答える 3

1

Online Python Tutor ( http://www.pythontutor.com/ ) をご覧ください。それが行うことは、実行中にフレームをキャプチャして、Python コードの視覚化を作成することです。したがって、キャプチャしたフレームを使用できます。

于 2013-03-03T12:12:48.677 に答える
0

ASTモジュールsymtableモジュールを確認する必要があります

于 2013-03-03T13:16:07.627 に答える
0
>>> type(sys._getframe())()

TypeError: cannot create 'frame' instances

ごめん。

于 2013-03-03T10:16:33.737 に答える