2011-05-17 68 views
1

是否在持續運行的腳本的重新執行時使用對象?如果我想要一個正在運行的腳本重新執行自己以獲取任何代碼更改,(os.exec *)是否有一種方法可以在重新執行後保留對象以進行訪問?我可以用酸洗的ascii數據設置環境變量,或者將這些數據寫入管道並在重新執行後重新讀取它,但這看起來不雅觀或者像黑客一樣。即使這樣做,並不是所有的食品都能很好地醃製。通過重新執行的Python對象持久化

+0

「re-excution」是什麼意思?您的腳本被終止並由用戶在同一會話中再次運行?或者你的腳本使用os.exec()調用它自己? – 2011-05-17 00:08:59

+0

@boaz腳本調用os.exec自己 – tMC 2011-05-17 00:21:10

+0

然後這對我來說似乎是一個壞主意,除非你想並行運行多個進程(但你不想持久化)。 Python有很多用於運行python代碼的工具,所以你不需要爲python腳本使用os.exec()。你看過Greg的解決方案嗎? – 2011-05-17 00:58:54

回答

3

如果你把你的代碼模塊中,你可以使用reload()標準函數加載代碼的新版本。你的主要模塊看起來是這樣的:

import mymodule 

while mymodule.go(): 
    reload(mymodule) 

每當你想重新加載模塊的代碼,從go()返回True。當你想退出時,返回False

1

結賬shelve

import shelve 

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

,如果我可以逃脫它,我不想擔心什麼對象即時通訊試圖保存,如果他們會按預期醃製。 – tMC 2011-05-17 00:11:59