当前位置:  开发笔记 > 编程语言 > 正文

使用"import <module>"或"from <module> import <func>"更有效吗?

如何解决《使用"import<module>"或"from<module>import<func>"更有效吗?》经验,为你挑选了2个好方法。

假设我只需要使用re模块中的findall(),它是否更有效:

from re import findall

要么

import re

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



1> Kozyarchuk..:

导入没有区别,但访问方面存在细微差别.

当您访问该功能时

re.findall() 

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


+1,但是请注意Python将在全局命名空间之前搜索本地命名空间,因此创建引用该函数的本地函数(findall = re.findall)是最好的,并且与两种导入样式的工作方式相同.

2> Noah..:

如有疑问,请及时:

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,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看起来执行速度大约是原来的两倍.但据推测,导入代码的执行是您的瓶颈,而不是实际的导入.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有