python计时必备!——timeit模块介绍

python提供了一个timeit模块可以用来测试一小段Python代码的执行速度。
使用方法如下:

1、导入模块

imoet timeit

2、创建对象

def t1():
   l = []
   for i in range(1000):
      l = l + [i]

timer1 = Timer("t1()", "from __main__ import t1")

其中Timer()的参数如下:

class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)
Timer是测量小段代码执行速度的类。

stmt参数是要测试的代码语句(statment);

setup参数是运行代码时需要的设置;

timer参数是一个定时器函数,与平台有关。

3、开始计时

print("concat ",timer1.timeit(number=1000), "seconds")

number参数是测试代码时的测试次数,默认为1000000次。方法返回执行代码的耗时,一个float类型的秒数。

4、使用timeit比较insert和append的运行速度

def t2():
    li = []
    for i in range(10000):
        li.append(i)


def t5():
    li = []
    for i in range(10000):
        li.insert(0, i)

timer2 = Timer('t2()', 'from __main__ import t2')
print("append:", timer2.timeit(number=1000))

timer5 = Timer('t5()', 'from __main__ import t5')
print("insert:", timer5.timeit(number=1000))

# append: 0.9202240769991477
# insert: 21.039387496999552

5 测时带参数的函数

import timeit


def quick_sort(alist, start, end):
    """快速排序"""
    if start >= end:  # 递归结束基准
        return

    mid = alist[start]  # 设定基准元素
    low = start
    high = end

    while low < high:
        while low < high and alist[high] >= mid:  # 如果该元素大于基准
            high -= 1  # 不对该元素做处理,移动下标处理下一个元素
        # 如果元素小于基准
        alist[low] = alist[high]

        while low < high and alist[low] < mid:
            low += 1
        # 将low指向的元素放到high的位置上
        alist[high] = alist[low]
    alist[low] = mid
    quick_sort(alist, start, low - 1)
    quick_sort(alist, low + 1, end)

li = [41, 45, 44, 2, 78, 62, 25, 34, 65]

q1 = timeit.Timer("quick_sort(li, 0, len(li) - 1)", "from __main__ import quick_sort, li")
print(q1.timeit(number=10))
6.646145666282256e-05

猜你喜欢

转载自blog.csdn.net/m0_38106113/article/details/81772547