timeit

  • 通常在一段程序的前后都用上time.time(),然后进行相减就可以得到一段程序的运行时间,不过python提供了更强大的计时库:timeit
# 导入timeit.timeit
from timeit import timeit  

# 执行1000000次a=1的时间:
timeit('a=1')

# a=1的执行时间,执行1次(number默认值为1000000):
timeit('a=1', number=1)

# 一个列表生成器的执行时间,执行1次:
timeit('[i for i in range(10000)]', number=1)

# 一个列表生成器的执行时间,执行10000次:
timeit('[i for i in range(10000)]', number=10000)

测试一个函数的执行时间:

  • 测试一个函数执行1000次的执行时间
from timeit import timeit


def test():
    a = 1
    print(s)

# timeit(函数名_字符串,运行环境_字符串,number=运行次数)
time = timeit('test()', 'from __main__ import test', number=1000)
print(time)

repeat:

  • 由于硬件与环境的不同,程序不可能每次都是最高效的执行。所以一般都会进行多次试验,取最少的执行时间。
  • repeat和timeit用法相似,多了一个repeat参数,表示重复测试的次数(默认值为3),返回值为列表。
from timeit import repeat


def test_1():
    root_geometry = '%d%s%d%s%d%s%d' % (1, '*', 1, '+', 1, '+', 1)


def test_2():
    root_geometry = str(int(1)) + '*' + str(int(1)) + '+' + str(int(1)) + '+' + str(int(1))


if __name__ == '__main__':
    time_1 = repeat('test_1()', 'from __main__ import test_1', number=100, repeat=5)
    time_2 = repeat('test_2()', 'from __main__ import test_2', number=100, repeat=5)
    print(time_1)
    print(min(time_1))
    print(time_2)
    print(min(time_2))