以下两者之间有什么显着区别吗:
from time import time
start = time()
# some process
print time() - start
和:
from timeit import timeit
def my_funct():
# some process
print timeit(my_funct, number=1)
例如,我将使用欧拉 1 项目(因为它真的很容易理解/解决)
def pE1test1(): # using time()
from time import time
start = time()
print sum([n for n in range(1, 1000) if n%3==0 or n%5==0])
print time() - start
def pE1test2(): # using timeit
print sum([n for n in range(1, 1000) if n%3==0 or n%5==0])
from timeit import timeit
pE1test1()
print timeit(pE1test2, number=1)
这输出:
>>>
233168
0.0090000629425
233168
0.00513921300363
timeit
和time
的主要区别是什么?
timeit
将使用系统上可用的最佳计时功能。 请参阅timeit.default_timer
上的文档。
此外,timeit
关闭垃圾回收器。
另外,我相信你用错timeit
。 您应该按照文档中的最后一个示例传递一个字符串:
print timeit("pE1test2()","from __main__ import PE1test2",number=1)
当然,另一个主要区别是,timeit
使得对数千次迭代的函数执行进行计时变得微不足道(这是计时结果唯一有意义的时间)。 这降低了单次运行比其他运行花费更长的时间的重要性(例如,由于您的系统资源被其他程序占用)。
这两个模块的目的非常不同。
时间模块提供对底层系统提供的各种时间/日期函数的低级访问。
timeit 模块专门用于运行性能测试。
正如你所指出的,你可以使用时间函数进行简单的计时,但是人们在尝试进行性能测试时会遇到许多常见的陷阱。 timeit试图缓解这些错误,以获得可以合理比较的可重复数字。