重新載入 Python 模組以進行伺服器升級
維護長時間運行的 Python 伺服器可能需要升級,而無需重新啟動整個伺服器。一種方法是卸載和重新載入特定模組。
問題:如何卸載和重新載入 Python 模組?
卸載先前導入的模組並加載其更新版本無需重啟伺服器:
答案:使用importlib.reload()函數
對於Python 3.4 ,使用importlib.reload()函數:
from importlib import reload import foo while True: # Perform actions if is_changed(foo): foo = reload(foo)
對於 Python 2,使用 imp 模組的 reload 函數。
重新綁定參考
重新載入模組後,它的物件將被重新創建,但外部引用將需要更新。在提供的範例中,如果 Foo 物件駐留在 foo 模組中,則需要重新建立它們。
此技術通常用於 Django 開發伺服器中的熱重載,允許在不重新啟動的情況下反映程式碼中的變更伺服器。
Python 模組重新載入詳細資訊
Importlib.reload() 重新編譯模組的程式碼,重新執行模組級程式碼,並使用新物件更新模組的字典。當引用計數降至零時,舊物件將被垃圾收集。
如果需要,需要手動更新模組外部舊物件的未綁定參考。
以上是如何在不重新啟動伺服器的情況下重新載入Python模組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!