这是我做的,我创建了2个过程,一个在函数中,一个在python文件中。即使它完全相同,python文件本身的一个运行速度差不多2倍。为什么?
Bellow是一个带有2个过程的例子,它们只是P元素上的循环
我有以下python文件:
from time import *
P=1000000 #range of the 2 loops
def loop(N):
for k in range(N):
continue
start=time()
loop(P)
stop1=time()
for k in range(P):
continue
stop2=time()
print "time with function ",stop1-start
print "time without function ",stop2-stop1
这是我得到的(我尝试了一千个样本,结果如下):
time with function 0.0950000286102
time without function 0.15700006485
使用xrange而不是范围我得到:
time with function 0.0460000038147
time without function 0.107999843597
因此用于构建列表的时间为0.05秒
我知道这可能是一个无用的问题,但是如果有人知道为什么这会快得多,我会很高兴知道
答案 0 :(得分:14)
唯一显着的区别是函数中的版本仅更新该函数的局部变量,而函数中的版本不更新全局变量k
。 / p>
如上所述here:
对于for循环的非映射版本,我们可用的最终加速是尽可能使用局部变量。如果将上述循环强制转换为函数,则append和upper将变为局部变量。 Python比全局变量更有效地访问局部变量。