使用“import <module>”或“from <module> import <func>”更有效吗?</func> </module> </module>

时间:2008-12-06 20:25:06

标签: python import

假设我只需要使用re模块中的findall(),这样做效率更高:

from re import findall

import re

在速度/内存使用方面是否有任何差异?

3 个答案:

答案 0 :(得分:12)

导入没有区别,但访问权限存在细微差别。

当您以

的身份访问该功能时
re.findall() 

python将需要首先在全局范围内找到该模块,然后在模块dict中找到findall。如果你在一个循环内调用它数千次,可能会有所作为。

答案 1 :(得分:10)

如有疑问,请及时:

from timeit import Timer

print Timer("""re.findall(r"\d+", "fg12f 1414 21af 144")""", "import re").timeit()
print Timer("""findall(r"\d+", "fg12f 1414 21af 144")""", "from re import findall").timeit()

我得到以下结果,使用至少5次重复10,000次通话:

re.findall(): 123.444600105
findall(): 122.056155205

直接使用findall()而不是re.findall()似乎有一点点使用优势。

但是,实际的进口报表的速度差异很大。在我的计算机上,我得到以下结果:

>>> Timer("import re").timeit()
2.39156508446
>>> Timer("from re import findall").timeit()
4.41387701035

所以import re的执行速度大约是其两倍。但据推测,导入代码的执行是你的瓶颈,而不是实际的导入。

答案 2 :(得分:3)

除了在导入后在本地命名空间中显示re的名称之外没有区别。