Python 模块 - 运行时会发生什么?
Python Modules - What happens during runtime?
我是编写 python 模块的新手,我很好奇您的模块在 运行 期间发生了什么?例如,模块是否在需要时加载和卸载?我运行宁的具体情况是这样的:
我构建了一些使用内存缓存的模块,该模块是从查看缓存的导出函数调用的,具有一些逻辑,然后 returns 一个基于缓存中的值的布尔值缓存。在这种特定情况下,每次调用函数时都会更新缓存,此缓存会在这些多次调用中持续存在吗?还是模块在不使用时被卸载,因此从内存中清除我的缓存并在再次访问模块时重新加载?
更广泛地说,在我的 python 应用程序的整个 运行 时间内,我可以期望我的模块的行为是什么?
导入模块时,将执行其代码并将生成的模块放置在 sys.modules
之后,模块被分配给一个带有模块名称的变量。例如,如果您执行 import os
,模块将使用键 os
插入到 sys.modules
中,并分配给名为 os
.
的全局变量
在正常操作中,模块永远不会卸载,因此您不必担心数据丢失或类似情况。也就是说,有像 importlib.reload
这样的函数在某些情况下会导致模块丢失数据。
不过,只要您不乱搞内部结构,您就可以安全地假设缓存中的数据在程序的整个运行期间都保持有效。
我是编写 python 模块的新手,我很好奇您的模块在 运行 期间发生了什么?例如,模块是否在需要时加载和卸载?我运行宁的具体情况是这样的:
我构建了一些使用内存缓存的模块,该模块是从查看缓存的导出函数调用的,具有一些逻辑,然后 returns 一个基于缓存中的值的布尔值缓存。在这种特定情况下,每次调用函数时都会更新缓存,此缓存会在这些多次调用中持续存在吗?还是模块在不使用时被卸载,因此从内存中清除我的缓存并在再次访问模块时重新加载?
更广泛地说,在我的 python 应用程序的整个 运行 时间内,我可以期望我的模块的行为是什么?
导入模块时,将执行其代码并将生成的模块放置在 sys.modules
之后,模块被分配给一个带有模块名称的变量。例如,如果您执行 import os
,模块将使用键 os
插入到 sys.modules
中,并分配给名为 os
.
在正常操作中,模块永远不会卸载,因此您不必担心数据丢失或类似情况。也就是说,有像 importlib.reload
这样的函数在某些情况下会导致模块丢失数据。
不过,只要您不乱搞内部结构,您就可以安全地假设缓存中的数据在程序的整个运行期间都保持有效。