我刚开始编写python模块,我很好奇在运行时模块会发生什么?例如,是否在需要时加载和卸载模块?我遇到的具体情况是这样的:
我已经构建了一个利用内存缓存的模块,该模块从导出的函数中调用,该函数查看缓存,具有一定的逻辑,然后根据缓存中的值返回布尔值。在这种特定情况下,每次调用函数时都会更新缓存,该缓存是否会在多个调用之间持续存在?还是在不使用模块时将其卸载,从而从内存中清除我的缓存并在再次访问该模块时重新加载?
更广泛地说,在我的python应用程序的整个运行过程中,我对模块的预期行为是什么?
答案 0 :(得分:3)
导入模块时,将执行其代码,并将生成的模块放入sys.modules
然后,将模块分配给具有模块名称的变量。例如,如果您进行import os
,则模块将通过键sys.modules
插入到os
中,并分配给名为os
的全局变量。
在正常操作中,模块永远不会卸载,因此您不必担心数据丢失或类似情况。就是说,有importlib.reload
之类的功能在某些情况下可能导致模块丢失数据。
但是,只要您不弄乱内部结构,就可以放心地假设缓存中的数据在程序的整个运行期间都保持有效。