Python模块-运行时会发生什么?

时间:2019-07-05 22:31:14

标签: python module python-module

我刚开始编写python模块,我很好奇在运行时模块会发生什么?例如,是否在需要时加载和卸载模块?我遇到的具体情况是这样的:

我已经构建了一个利用内存缓存的模块,该模块从导出的函数中调用,该函数查看缓存,具有一定的逻辑,然后根据缓存中的值返回布尔值。在这种特定情况下,每次调用函数时都会更新缓存,该缓存是否会在多个调用之间持续存在?还是在不使用模块时将其卸载,从而从内存中清除我的缓存并在再次访问该模块时重新加载?

更广泛地说,在我的python应用程序的整个运行过程中,我对模块的预期行为是什么?

1 个答案:

答案 0 :(得分:3)

导入模块时,将执行其代码,并将生成的模块放入sys.modules

然后,将模块分配给具有模块名称的变量。例如,如果您进行import os,则模块将通过键sys.modules插入到os中,并分配给名为os的全局变量。

在正常操作中,模块永远不会卸载,因此您不必担心数据丢失或类似情况。就是说,有importlib.reload之类的功能在某些情况下可能导致模块丢失数据。

但是,只要您不弄乱内部结构,就可以放心地假设缓存中的数据在程序的整个运行期间都保持有效。