chenggou 在 [奇怪的知识] pydantic 中的 cache import 中发帖
在 Pydantic 的源码中,我们可以看到这样一段代码(位于 _internal._import_utils.py):
@cache
def import_cached_base_model() -> type['BaseModel']:
from pydantic import BaseModel
return BaseModel
很显然,这段代码将导入的 BaseModel 缓存了起来。
这时候就会有观众👴问了:“Python 在导入模块时,会把模块缓存到 sys.modules,下次再导入同一个模块时会直接从缓存中取,为什么 Pydantic 还要额外做一层缓存呢?”
答案在于:即使模块已经在 sys.modules 中缓存了,Python 执行 import 语句本身仍然有开销 。
当我们执行:
from pydantic import BaseMod...