假设我只需要使用re模块中的findall(),这样做效率更高:
from re import findall
或
import re
在速度/内存使用方面是否有任何差异?
答案 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的名称之外没有区别。