如何使用importlib.LazyLoader?

2024-06-26 13:18:52 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的模块中,我有几个函数依赖于启动时间较长的外部模块。如何使用^{}?如果我有

import veggies

或者

^{pr2}$

或者

from veggies.brussels import sprouts

我该如何替换这些语句来使用LazyLoader,从而将模块内容的执行推迟到需要的时候?在

从文档中看不出如何使用它。没有示例,nullege code search只提供了Python本身包含的单元测试。在


Tags: 模块函数from文档import示例内容时间
1条回答
网友
1楼 · 发布于 2024-06-26 13:18:52

original issue中有一些代码似乎是完全导入的:

以下文件延迟导入两个模块:

import sys
import importlib.util

def lazy(fullname):
  try:
    return sys.modules[fullname]
  except KeyError:
    spec = importlib.util.find_spec(fullname)
    module = importlib.util.module_from_spec(spec)
    loader = importlib.util.LazyLoader(spec.loader)
    # Make module with proper locking and get it inserted into sys.modules.
    loader.exec_module(module)
    return module

os = lazy("os")
myown = lazy("myown")

print(os.name)
myown.test()

为了测试,我在myown.py中使用了以下内容。在

^{pr2}$

这很好地工作(python3.8a0)。在

相关问题 更多 >