重新执行的Python对象持久性

时间:2011-05-17 00:02:43

标签: python process exec

是否可以将对象保留在正在运行的脚本的重新执行上?如果我想让一个正在运行的脚本重新执行以获取任何代码更改,那么(os.exec *)有没有办法在重新执行后保留对象的访问权限?我可以使用pickle ascii数据设置环境变量,或者将该数据写入管道并在重新执行后重新读取它,但这看起来不够优雅或者像黑客一样。即使这样做,并非所有项目都很好。

2 个答案:

答案 0 :(得分:3)

如果将代码放在模块中,则可以使用reload()标准函数加载新版本的代码。您的主要模块可能如下所示:

import mymodule

while mymodule.go():
    reload(mymodule)

每当您想重新加载模块代码时,请从True返回go()。如果要退出,请返回False

答案 1 :(得分:1)

结帐shelve

import shelve

db = shelve.open("database", "c")
db["one"] = 1
db["two"] = 2
db["three"] = 3
db.close()