Python 模块 - 运行时会发生啥?
Posted
技术标签:
【中文标题】Python 模块 - 运行时会发生啥?【英文标题】:Python Modules - What happens during runtime?Python 模块 - 运行时会发生什么? 【发布时间】:2019-11-16 11:41:55 【问题描述】:我是编写 python 模块的新手,我很好奇你的模块在运行时会发生什么?例如,模块是否在需要时加载和卸载?我遇到的具体情况是这样的:
我已经构建了一些使用内存缓存的模块,该模块是从一个查看缓存的导出函数调用的,有一些逻辑,然后根据缓存中的值返回一个布尔值。在这种特定情况下,每次调用函数时都会更新缓存,该缓存是否会在这些多次调用中持续存在?还是在不使用模块时将其卸载,从而从内存中清除我的缓存并在再次访问模块时重新加载?
更广泛地说,在我的 python 应用程序运行期间,我可以期待我的模块的行为是什么?
【问题讨论】:
【参考方案1】:当你导入一个模块时,它的代码会被执行并且生成的模块会被放置在sys.modules
之后,模块会被分配给具有模块名称的变量。例如,如果您执行import os
,则模块将插入到sys.modules
中,键为os
,并分配给名为os
的全局变量。
在正常操作中,模块永远不会被卸载,因此您不必担心数据丢失或类似情况。也就是说,像importlib.reload
这样的函数在某些情况下会导致模块丢失数据。
不过,只要您不搞乱内部结构,您就可以放心地假设缓存中的数据在整个程序运行时保持有效。
【讨论】:
以上是关于Python 模块 - 运行时会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章