0

オンラインの Python シェルを構築しようとしています。のインスタンスを作成してコマンドを実行しInteractiveInterpreter、コマンドを使用しますruncode。そのためには、インタープリターの状態をデータベースに保存して、グローバルおよびローカル名前空間の変数、関数、定義、およびその他の値をコマンド間で使用できるようにする必要があります。InteractiveInterpreter後で取得localしてコンストラクターに引数として渡すことができるオブジェクトの現在の状態を保存する方法はありますInteractiveInterpreterか、またはこれができない場合、言及された機能を実現するためにどのような代替手段が必要ですか?
以下は、私が達成しようとしているものの擬似コードです


def fun(code, sessionID):
     session = Session()
     # get the latest state of the interpreter object corresponding to SessionID
     vars = session.getvars(sessionID)
     it = InteractiveInterpreter(vars)
     it.runcode(code)
     #save back the new state of the interpreter object
     session.setvars(it.getState(),sessionID)

ここで、セッションは必要なすべての情報を含むテーブルのインスタンスです。

4

2 に答える 2

0

私はpickleパッケージがあなたのために働くべきだと信じています. pickle.dumpまたはを使用pickle.dumpsして、ほとんどのオブジェクトの状態を保存できます。(その後、pickle.loadまたはそれpickle.loadsを取り戻すために)

于 2012-11-06T15:28:29.960 に答える
0

pickle が機能しない場合は、次のような形式 (大まかに) で、クラスを再インスタンス化してみてください。

class MyClass:
    def __init__(self, OldClass):
        for d in dir(OldClass):
            # go through the attributes from the old class and set
            # the new attributes to what you need
于 2012-11-06T17:43:24.410 に答える