Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python timeit模块-获得最快和最慢的循环_Python_Python 2.7_Timeit - Fatal编程技术网

Python timeit模块-获得最快和最慢的循环

Python timeit模块-获得最快和最慢的循环,python,python-2.7,timeit,Python,Python 2.7,Timeit,我想用Python的timeit模块做一些基准测试。有没有办法让timeit返回1000个循环中最慢和最快的循环的时间?代码很容易破解。您应该能够复制timeit.py,将其保存到my_timeit.py,稍微编辑它,然后将其用作新模块 你可以在上面看到timeit.pydoesbest=min(r);您可以添加bast=max(r)并编辑下面的打印语句。代码非常容易破解。您应该能够复制timeit.py,将其保存到my_timeit.py,稍微编辑它,然后将其用作新模块 你可以在上面看到tim

我想用Python的timeit模块做一些基准测试。有没有办法让timeit返回1000个循环中最慢和最快的循环的时间?

代码很容易破解。您应该能够复制
timeit.py
,将其保存到
my_timeit.py
,稍微编辑它,然后将其用作新模块


你可以在上面看到
timeit.py
does
best=min(r)
;您可以添加
bast=max(r)
并编辑下面的打印语句。

代码非常容易破解。您应该能够复制
timeit.py
,将其保存到
my_timeit.py
,稍微编辑它,然后将其用作新模块


你可以在上面看到
timeit.py
does
best=min(r)
;您可以添加
best=max(r)
并编辑下面的打印语句。

使用该函数而不是返回时间列表的
timeit

使用该函数而不是返回时间列表的
timeit

timeit
返回“三选一”即。,有两个参数:一个指定循环中的迭代次数,另一个指定重复循环的次数。传递给
min()
的结果是每个循环的时间,而不是循环的每次迭代的时间

重复循环的目的是排除来自同一系统上其他进程的影响——来自文档(
help('timeit')
):

当需要精确计时时,最好的做法是重复 计时几次,并使用最佳时间。r选项很好 为此,;在大多数情况下,默认的3次重复可能就足够了 案例

重复测量1000次是没有意义的。您可能打算为单个循环指定1000次迭代(默认值为1000000)

只有最快的循环(最短时间)才有用——从
help('timeit.Timer.repeat')

注:计算平均值和标准偏差很有诱惑力 结果向量并报告这些结果。然而,这不是很有用。在里面 典型情况下,最低值给出了速度的下限 机器可以运行给定的代码段结果中的更高值 向量通常不是由Python速度的变化引起的,而是 由于其他进程干扰您的计时精度。因此 结果的min()可能是您应该输入的唯一数字 对……感兴趣。然后,你应该看看整个向量,然后 应用常识而不是统计。重点是我的

i、 例如,最慢的循环表示有多少其他过程会干扰测量

#!/usr/bin/env python
import timeit

def your_function():
    "do something"

t = timeit.Timer(your_function)
# repeat 10 times, 1000000 times through the loop
repeat, number = 10, 1000000
r = t.repeat(repeat, number) 
best, worse = min(r), max(r)
print("{number} loops, best of {repeat}: {best:.3g} seconds per loop, "
     "worse of {repeat}: {worse:.3g} seconds per loop".format(**vars()))

timeit
返回“三选一”即有两个参数:一个参数指定循环中的迭代次数,另一个参数指定重复循环的次数。传递给
min()
的结果是每个循环的时间,而不是循环的每次迭代的时间

重复循环的目的是排除来自同一系统上其他进程的影响——来自文档(
help('timeit')
):

当需要精确计时时,最好的做法是重复 计时几次,并使用最佳时间。r选项很好 为此,;在大多数情况下,默认的3次重复可能就足够了 案例

重复测量1000次是没有意义的。您可能打算为单个循环指定1000次迭代(默认值为1000000)

只有最快的循环(最短时间)才有用——从
help('timeit.Timer.repeat')

注:计算平均值和标准偏差很有诱惑力 结果向量并报告这些结果。然而,这不是很有用。在里面 典型情况下,最低值给出了速度的下限 机器可以运行给定的代码段结果中的更高值 向量通常不是由Python速度的变化引起的,而是 由于其他进程干扰您的计时精度。因此 结果的min()可能是您应该输入的唯一数字 对……感兴趣。然后,你应该看看整个向量,然后 应用常识而不是统计。重点是我的

i、 例如,最慢的循环表示有多少其他过程会干扰测量

#!/usr/bin/env python
import timeit

def your_function():
    "do something"

t = timeit.Timer(your_function)
# repeat 10 times, 1000000 times through the loop
repeat, number = 10, 1000000
r = t.repeat(repeat, number) 
best, worse = min(r), max(r)
print("{number} loops, best of {repeat}: {best:.3g} seconds per loop, "
     "worse of {repeat}: {worse:.3g} seconds per loop".format(**vars()))