一、使用Python内置模块time
import time
start_time = time.time() # 获取程序开始时间
# 程序主体部分
for i in range(1000000):
pass
end_time = time.time() # 获取程序结束时间
print("程序运行时间为:%f秒" % (end_time - start_time))
Python提供了内置的time
模块,其中time()
函数可以返回当前的时间戳(距离1970年1月1日0时0分0秒的秒数),可以用它来计算程序的运行时间。程序开始时调用time()
函数获取开始时间,结束时再调用一次获取结束时间,两者的差值即为程序运行时间。
二、使用装饰器计时
import time
def time_calculator(func):
def wrapper(*args, **kwargs):
start_time = time.time() # 获取程序开始时间
result = func(*args, **kwargs) # 执行函数
end_time = time.time() # 获取程序结束时间
print("%s 运行时间为:%f秒" % (func.__name__, end_time - start_time))
return result
return wrapper
@time_calculator
def foo():
for i in range(1000000):
pass
foo()
使用Python的装饰器可以实现更加优雅的代码,可以避免在每个需要计时的函数中都写上计时的代码。在装饰器中,先记录开始时间,然后执行被装饰函数,最后再记录结束时间,并计算出程序运行时间。
三、使用Python第三方模块timeit
import timeit
code = """
for i in range(1000000):
pass
"""
print("程序运行时间为:%f秒" % timeit.timeit(stmt=code, number=1))
Python也提供了第三方模块timeit
,可以用来测试小段代码的执行时间。timeit()
函数接受两个参数,第一个是要执行的代码,第二个是执行几次,默认为1。函数会自动多次执行代码,并计算平均执行时间。
四、注意事项
计算程序运行时间时,应注意以下事项:
- 计时应该放在程序的主体部分,避免计算启动时间和结束时间的时间影响。
- 实际运行时间可能受到系统负载、硬件配置等因素的影响,因此计算出的运行时间并不能完全反映程序的优化效果。
- 当程序需要运行很长时间时,建议使用
time
模块中的perf_counter()
函数,它可以提供更高精度的时间戳。