组织大量python导入

2024-06-16 16:30:06 发布

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

大约25%的代码依赖于模块:Traits、tvtk、。。。进口相当重。在我的机器上通常需要2秒的时间(在其他机器上则需要更长时间)。在

我的模块组织如下

mainmodule
|--submodule1
|--submodule2
   |--subsubmodule1
   |--subsubmodule2
|--submodule3
|--submodule4
   |--subsubmodule1
   |--subsubmodule2

其中,子模块1和子模块2使用特征。这意味着75%的时间,如果我调用import mainmodule,我将不得不等待重模块被导入,但之后它们将不被使用。在

我如何组织我的进口,以便缩短进口时间?在

也许有一种方法可以做到:

^{pr2}$

并且拥有

mainmodule
|--submodule3
|--submodule4
   |--subsubmodule1
   |--subsubmodule2

只打电话给:

import mainmodule.heavy

拥有一切


Tags: 模块代码import机器时间特征tvtktraits
2条回答

听起来您想要的是一种方法,这样导入mainmodule不会自动导入submodule1和{},这两个操作需要很长时间才能加载。在

实际上,这很简单。只能在需要的函数中导入submodule1submodule2。或者将这些函数移动到名为mainmodule_heavy.py的单独模块中。在

(或者你可以hack the Python module system to load modules lazily。但这种黑客攻击往往会带来问题,对你的案子来说,这听起来是不必要的。)

您可以在函数/模块:-在

def heavy():
    global x
    global y
    import x, y

def mainmodule():
    if heavy not in globals():
        import heavy

实际上,这在同一个程序中是行不通的,因为函数不能被导入。另外,您需要检查全局参数中的字符串,而不是模块本身。所以,取而代之的是:在

^{pr2}$

相关问题 更多 >