1. 魔法命令
- jupyter notebook:
以%开头的叫做line magic, 这种类型的指令只能作用于一行代码,默认可以不加%
以%%开头的叫做cell magic, 这种类型的指令只能作用于代码块(多行代码)
%time print(123) # 返回执行一条语句所用的时间
%timeit print(123) # 多次执行同一条语句,返回平均时间
%%time # 执行多行代码返回所用时间
for i in range(5):
print(i)
%%timeit #多次执行多行代码,返回平均时间
for i in range(5):
print(i)
2. time
time_start=time.time()
print('start:%f' % time_start)
my_sum = 0
for i in range(10000000):
my_sum += i
print(my_sum)
time_end=time.time()
print('end:%f' % time_end)
print('time cost',time_end-time_start,'s')
start:1563865833.525937
49999995000000
end:1563865834.660238
time cost 1.134300947189331 s
更多time用法,见https://www.runoob.com/python/python-date-time.html
3. timeit
from timeit import timeit
#看执行1000000次x=1的时间:
timeit('x=1')
#看x=1的执行时间,执行1次(number可以省略,默认值为1000000):
timeit('x=1', number=1)
#看一个列表生成器的执行时间,执行1次:
timeit('[i for i in range(10000)]', number=1)
#看一个列表生成器的执行时间,执行10000次:
timeit('[i for i in range(100) if i%2==0]', number=10000)
# 测试一个函数的时间
from timeit import timeit
def func():
s = 0
for i in range(1000):
s += i
print(s)
# timeit(函数名_字符串,运行环境_字符串,number=运行次数)
t = timeit('func()', 'from __main__ import func', number=1000)
# 进行多次试验,取最少的执行时间为真正的执行时间。
from timeit import repeat
def func():
s = 0
for i in range(1000):
s += i
#repeat和timeit用法相似,多了一个repeat参数,表示重复测试的次数(可以不写,默认值为3.),返回值为一个时间的列表。
t = repeat('func()', 'from __main__ import func', number=100, repeat=5)
print(t)
print(min(t))
ps:python中还有datatime模块,该模块功能很多,可参照博客:https://www.cnblogs.com/awakenedy/articles/9182036.html