惰性导入
惰性导入(Lazy Import)是指在需要使用某个模块时才进行导入,而不是在程序启动时就导入所有模块。这样可以减少程序启动时间,提高性能。
实现原理:通过自定义一个类(如LazyImport),在该类中延迟导入模块。只有在访问模块中的属性或方法时,才会真正执行导入操作。
示例代码:LazyImport类在初始化时接受模块名,但并不立即导入模块。只有当访问模块中的属性或方法时,才会调用 import 函数导入模块,并返回相应的属性或方法。
# 惰性导入示例
class LazyImport:
def __init__(self, module_name):
self.module_name = module_name
self.module = None
def __getattr__(self, name):
if self.module is None:
self.module = __import__(self.module_name)
return getattr(self.module, name)
# 使用惰性导入
lazy_math = LazyImport('math')
# 只有在调用math.sqrt时才会真正导入math模块
print(lazy_math.sqrt(16)) # 输出: 4.0
标准库 importlib 的方法
如果某些模块不能懒加载,需要排除,可以这样