1. Python2和Python3的区别
- Python2:range()函数返回的是列表List对象,xrange()函数返回的可迭代的对象
- Python3:range()函数返回的是可迭代的对象
2. timeit 模块:准确测量小段代码的执行时间
参考博文:https://blog.youkuaiyun.com/mzpmzk/article/details/75220819
- timeit 模块中的三个函数
timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=1000000)
:创建一个Timer实例,参数分别是stmt(需要测量的语句或函数),setup(初始化代码或构建环境的导入语句),timer(计时函数),number(每一次测量中语句被执行的次数)timeit.repeat(stmt='pass', setup='pass', timer=<default timer>, repeat=3, number=1000000)
:创建一个Timer实例,指定整个试验的重复次数,返回一个包含了每次试验的执行时间的列表,利用这一函数可以很方便得实现多次试验取平均的方法。timeit.default_timer()
:默认的计时器,一般是time.perf_counter(),time.perf_counter()
方法能够在任一平台提供最高精度的计时器(它也只是记录了自然时间,记录自然时间会被很多其他因素影响,例如计算机的负载)
- 在脚本程序中的使用
import timeit
def test():
L = []
for i in range(100):
L.append(i)
if __name__ == '__main__':
print timeit.timeit("test()", setup="from __main__ import test")
x = list(range(2000000))
t0 = timeit.timeit("x.pop(0)", "from __main__ import x", number=1000)
print("cost {} seconds ".format(t0))
3. time模块
# -*- coding: utf-8 -*-
# 如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?
import time
# time.time() 获取当前时间戳
start_time = time.time()
for a in range(0,1001):
for b in range(0,1001):
c = 1000 - a - b
if a**2 + b**2 == c**2:
print "a, b, c: %d, %d, %d" % (a, b, c)
end_time = time.time()
print "Time: %d" % (end_time - start_time)
print "Finished!"