4 回答
TA贡献2041条经验 获得超4个赞
reload
from importlib import reload # Python 3.4+ only.import foowhile True: # Do some things. if is_changed(foo): foo = reload(foo)
reload
imp
imp
importlib
reload
reload
重新编译Python模块的代码,重新执行模块级的代码,定义一组新的对象,这些对象绑定到模块字典中的名称。扩展模块的init函数不是第二次调用。与Python中的所有其他对象一样,只有在引用计数降到零之后,旧对象才会被回收。更新模块命名空间中的名称以指向任何新的或更改的对象。其他对旧对象的引用(例如模块外部的名称)不会反弹以引用新对象,如果需要的话,必须在它们出现的每个名称空间中进行更新。
Foo
Foo
foo
TA贡献1775条经验 获得超11个赞
imp.reload(module)
imp
importlib
I 想importlib.reload(module)
TA贡献1804条经验 获得超8个赞
您可以使用sys.getrefcount()查找引用的实际数量。
>>> import sys, empty, os>>> sys.getrefcount(sys)9>>> sys.getrefcount(os)6>>> sys.getrefcount(empty)3
大于3的数字表示很难摆脱模块。自带的“空”模块(不包含任何内容)应该在之后被垃圾收集。
>>> del sys.modules["empty"]>>> del empty
第三个引用是getrefcount()函数的工件。
TA贡献1993条经验 获得超5个赞
reload(module)
isinstance
reload()
sys.modules
sys.modules
None
添加回答
举报