📅  最后修改于: 2020-04-14 01:01:07             🧑  作者: Mango
本文将向您介绍一种测量Python代码段执行时间的方法。
我们将使用内置的Python库timeit。
该模块提供了一种简单的方法来查找少量Python代码的执行时间。
为什么需要时间模块?
现在,让我们开始探索这个方便的库!
模块函数timeit.timeit(stmt,setup,timer,number)接受四个参数:
凡timeit.timeit()函数返回的秒数花来执行代码。
例子1
首先让我们看一个基本的例子。
# 导入所需的模块
import timeit
# 代码段只能执行一次
mysetup = "from math import sqrt"
# 要评估其执行时间的代码段
mycode = '''
def example():
mylist = []
for x in range(100):
mylist.append(sqrt(x))
'''
# 时间声明
print timeit.timeit(setup = mysetup,
stmt = mycode,
number = 10000)
例子2
让我们看另一个实际的示例,在该示例中我们将比较两种搜索技术,即Binary搜索和Linear search。
另外,在这里我演示了另外两个功能,timeit.repeat函数和调用程序中已经定义的函数。
# 导入所需的模块
import timeit
# 二进制搜索功能
def binary_search(mylist, find):
while len(mylist) > 0:
mid = (len(mylist))//2
if mylist[mid] == find:
return True
elif mylist[mid] < find:
mylist = mylist[:mid]
else:
mylist = mylist[mid + 1:]
return False
# 线性搜索功能
def linear_search(mylist, find):
for x in mylist:
if x == find:
return True
return False
# 计算二进制搜索时间
def binary_time():
SETUP_CODE = '''
from __main__ import binary_search
from random import randint'''
TEST_CODE = '''
mylist = [x for x in range(10000)]
find = randint(0, len(mylist))
binary_search(mylist, find)'''
# timeit.repeat语句
times = timeit.repeat(setup = SETUP_CODE,
stmt = TEST_CODE,
repeat = 3,
number = 10000)
print('Binary search time: {}'.format(min(times)))
# 计算线性搜索时间
def linear_time():
SETUP_CODE = '''
from __main__ import linear_search
from random import randint'''
TEST_CODE = '''
mylist = [x for x in range(10000)]
find = randint(0, len(mylist))
linear_search(mylist, find)
'''
# timeit.repeat语句
times = timeit.repeat(setup = SETUP_CODE,
stmt = TEST_CODE,
repeat = 3,
number = 10000)
# 提升最低执行力时间
print('Linear search time: {}'.format(min(times)))
if __name__ == "__main__":
linear_time()
binary_time()
from __main__ import binary_search
from random import randint
示例3
最后,我在下面演示如何利用timeit模块的命令行界面:
在这里,我将分别解释每个术语:
因此,这是对timeit模块及其实际应用的简短而简洁的介绍。
对于Python程序员来说,当他们需要快速浏览一下代码片段的执行时间时,它是一个非常方便的工具。