'嵌套'导入语句的Python性能影响

时间:2018-03-02 10:35:05

标签: python performance module

我有一个使用twitter api分布在2个文件中的程序。一个文件专门用于发送和阅读推文,因此我将'import twitter'行放在该文件中。第二个文件有一个import语句来导入这个基于twitter的文件,并将从该文件中调用“read”和“post”函数。

这是代码的要点:

文件1:

import file2
file2.post(some text)

文件2:

import twitter
api = twitter.Api(...)
def post(text):    
    api.PostUpdate()

这很好,并且完全按照我的预期行事,但我不确定这是否是最有效的方式,性能明智,运行它。每次调用文件2时都会运行'import twitter'行,并用重复导入填充内存和时间吗?如果是这样,我会更好:

文件1:

import twitter
import file2
api = twitter.Api(...)
file2.post(some text, api)

文件2:

def post(text, api):
    api.PostUpdate(text)

api对象跨文件传递的位置。

由于

1 个答案:

答案 0 :(得分:4)

导入缓存所有导入,因此在多次导入时,他们只会在第一次执行导入后访问缓存版本。有关其工作原理的详细信息,请参阅https://docs.python.org/3/reference/import.html

一般来说,你应该围绕模块的概念创建你的导入结构是正确的,性能不应该是这个决定的一个重要因素,因为老实说,当你得到导入结构时,那不是那个很大的性能差异。如果您在文件中使用模块中的某些内容,则应明确导入该模块。与此相关的是确保您使用的每个模块都可以直接导入而不会出现错误,这将有助于您更好地设计模块并避免一类细微的错误,其中更改导入顺序可能会因importlib中的缓存机制而导致错误。 / p>