使用timeit测试python语句执行

发布时间:2019-07-31 09:30:51编辑:auto阅读(1498)

    使用timeit库可以测试小段代码片段的执行时间,简单示例如下:


    代码:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    import random
    import timeit
    from time import clock
    
    
    def get_random_number(num):
        '''get random number, no repeated element; use random.sample() method'''
        return random.sample(range(num), num)
    
    
    if __name__ == "__main__":
        #use clock() method to calculate time
        start = clock()
        list_a = get_random_number(200)
        finish = clock()
        print(finish - start)
        #check the length of list generated by function
        print(len(list_a))
        print(len(set(list_a))) 
    
        #use timeit.Timer() method
        t1 = timeit.Timer('get_random_number(200)',
                          setup="from __main__ import get_random_number")
        #only excute once
        print(t1.timeit(1))
        #only repeat once, and only excute once
        print(t1.repeat(1, 1))
    
        #use timeit.Timer() and lambda to invoke function
        print(timeit.Timer(lambda: get_random_number(200)).timeit(1))

    运行结果:

    这里写图片描述


    关键方法:

    timeit(number=1000000)
    计时主要语句执行number次的时间。它将执行一次setup语句,返回执行主要语句执行多次所需的时间,以浮点数秒数表示。参数为循环的次数,默认是100万。要用的主语句、setup语句和计时器函数将传递给构造函数。


    repeat(repeat=3, number=1000000)
    调用timeit()多次。

    这是一个方便的函数重复调用timeit(),并返回结果的列表。第一个参数指定调用timeit()多少次。第二个参数指定timeit()的number参数。


    参考:
    https://docs.python.org/3.5/library/timeit.html?

    http://python.usyiyi.cn/python_278/library/timeit.html

关键字