了解:模塊的重載
考慮到性能的原因,每個模塊只被導入一次,放入字典sys.module中,如果你改變了模塊的內容,你必須重啟程序,python不支持重新加載或卸載之前導入的模塊,
有的同學可能會想到直接從sys.module中刪除一個模塊不就可以卸載了嗎,注意了,你刪了sys.module中的模塊對象仍然可能被其他程序的組件所引用,因而不會被清楚。
特別的對於我們引用了這個模塊中的一個類,用這個類產生了很多對象,因而這些對象都有關於這個模塊的引用。
如果只是你想交互測試的一個模塊,使用 importlib.reload(), e.g. import importlib; importlib.reload(modulename),這只能用於測試環境。
例子
aa.py
def func1(): print('func1')
-
test.py
import time,importlib
import aa
time.sleep(10)
# importlib.reload(aa) 用於模塊重新加載
aa.func1()
在10秒的等待時間里,修改aa.py中func1的內容,等待test.py的結果。
打開importlib注釋,重新測試
