假设我只需要使用re模块中的findall(),它是否更有效:
from re import findall
要么
import re
在速度/内存使用方面是否有任何差异?
导入没有区别,但访问方面存在细微差别.
当您访问该功能时
re.findall()
python将需要首先在全局范围内找到该模块,然后在模块dict中找到findall.如果你在一个循环内调用它数千次,可能会有所作为.
如有疑问,请及时:
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
看起来执行速度大约是原来的两倍.但据推测,导入代码的执行是您的瓶颈,而不是实际的导入.