8

这是我所做的,我创建了 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 而不是 range 我得到:

time with function  0.0460000038147
time without function  0.107999843597

所以它就像 0.05 秒用于构建列表

我知道这可能是一个无用的问题,但如果有人知道为什么这会如此之快,我会很高兴知道

4

1 回答 1

14

唯一显着的区别是函数中的版本仅更新该函数的局部变量,而不在函数中的版本正在更新全局变量k

如此处所述:

对于 for 循环的非映射版本,我们可以使用的最终加速是尽可能使用局部变量。如果将上述循环转换为函数,则 append 和 upper 成为局部变量。Python 访问局部变量比访问全局变量更有效。

于 2011-08-11T15:42:41.067 回答