Как сохранить текущее состояние объекта InteractiveInterpreter в базе данных?
Я пытаюсь построить онлайн оболочку 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)
Здесь сессия является экземпляром таблицы, содержащей всю необходимую информацию.
2 ответа
Хорошо, если 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
Я верю pickle
Пакет должен работать на вас. Ты можешь использовать pickle.dump
или же pickle.dumps
сохранить состояние большинства объектов. (затем pickle.load
или же pickle.loads
чтобы вернуть его)