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