python timeit是否考虑计数中的设置

时间:2016-04-12 09:45:18

标签: python timeit

我使用python timeit查看函数运行所需的时间。

    setup = '''from __main__ import my_func
    import random
    l = list(range(10000))
    random.shuffle(l)'''
    timeit.timeit('my_func(l)', setup=setup, number=1000)

我得到的结果大于正常情况'检查日期时间。 timeit是否也计算设置所需的时间,如果是,我该如何禁用它?

3 个答案:

答案 0 :(得分:0)

docs说:

  

设置的执行时间从总体计时中排除   执行运行。

答案 1 :(得分:0)

Python 2.0 docs很清楚setup语句没有定时:

  

主要陈述的时间编号执行。这将执行设置   语句一次,然后返回执行main所需的时间   声明多次,以秒为单位测量为浮动。

但如果您不确定,请在设置声明中加入一个很大的缓慢过程并进行测试,看看它有什么不同。

答案 2 :(得分:0)

my_func(l)是否会变异l?这可能会影响时间。

timeit将运行一次设置,并在每次调用要定时的代码时重用设置创建的对象。此外,它可以调用代码几次,以大致测量其运行速度,并在实际定时运行之前选择迭代次数(尽管不是在您自己指定了运行次数的情况下)。这意味着如果有一个初始快速运行,它将不会被包含在定时结果中。

例如,如果my_func()是一个写得很糟糕的快速排序功能,当你在一个洗牌列表上调用它时它可能会很快运行,而当你用一个(现在已排序的)列表再次调用它时它会非常慢。 timeit只能测量非常慢的呼叫。