一、使用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。函数会自动多次执行代码,并计算平均执行时间。
四、注意事项
计算程序运行时间时,应注意以下事项:
1. 计时应该放在程序的主体部分,避免计算启动时间和结束时间的时间影响。
2. 实际运行时间可能受到系统负载、硬件配置等因素的影响,因此计算出的运行时间并不能完全反映程序的优化效果。
3. 当程序需要运行很长时间时,建议使用time模块中的perf_counter()函数,它可以提供更高精度的时间戳。