为什么你永远不应该重新加载模块?
为什么你永远不应该重新加载模块?
这个问题已经有答案了:
在“模块和包:忘记它!”28页(另见视频)中称:
你可以强制重新加载一个模块,但是你永远不应该这样做。
有人可以解释一下为什么我们不应该在Python中重新加载模块吗?
admin 更改状态以发布 2023年5月20日
重新加载在这里详细说明:如何卸载(重新加载)Python模块?
简称
有一些有效的应用场景使用 reload
,例如Django开发服务器。但总体而言,重新加载模块有太多需要注意的地方,不太实用。
最大的两个关注点是:
-
为了彻底卸载旧对象,必须确保没有其他模块或对象持有对它们的引用(通常不可能)。如果在此处失败,可能会导致难以跟踪的内存泄漏或意外行为。
-
没有一般的方法来重新加载具有C扩展的模块。有些模块可以安全地重新加载;有些可能看似可以安全地重新加载,但会泄漏,并且有些可能会崩溃您的解释器或产生奇怪的错误。