1

我有一个 Python 程序,它有几个缓慢的导入。我想延迟导入它们,直到需要它们。例如,如果用户只是想打印一条帮助消息,那么导入慢速模块是很愚蠢的。最Pythonic的方法是什么?

我将添加一个我正在使用的解决方案作为答案。不过,我知道你们都可以做得更好。

4

2 回答 2

5

只需将它们导入需要的地方。一个模块被导入一次后,它会被缓存,这样任何后续的导入都会很快。如果你导入同一个模块 20 次,只有第一个会很慢。

于 2012-11-05T23:10:28.810 回答
0

使用 'sys' 作为示例模块,下面的代码可以工作

class Importsys(object):
    def __setattr__(self, name, value):
        global sys
        import sys
        setattr(sys, name, value)
    def __getattribute__(self, name):
        global sys
        import sys
        return getattr(sys, name)
sys = Importsys()

这将确保当我尝试使用 sys 模块时,它会自动导入,并替换 sys 模块变量。但是,我必须为我想要即时导入的每个模块创建单独的类。我想我可以使用 __import__('sys') 函数,但这似乎会产生递归问题。

于 2012-11-05T23:05:42.540 回答