如何获得Python程序执行的时间?
在编写Python程序时,我们有时需要知道程序的运行时间,以便对程序进行优化。Python提供了多种方式来获得程序的运行时间。
更多Python文章,请阅读:Python 教程
time模块
time模块是Python标准库中用于处理时间相关操作的模块。其中time.time()函数可以返回一个自1970年1月1日午夜起的秒数,可以用来计算程序的运行时间。
示例代码:
import time
start = time.time() # 获取开始时间
# 执行你的Python代码
for i in range(1000000):
pass
end = time.time() # 获取结束时间
print("程序运行时间:", end-start, "秒")
输出结果:
程序运行时间: 0.0369718074798584 秒
datetime模块
datetime模块用于操作日期和时间。可以用datetime.datetime.now()函数获取当前日期和时间,再通过计算来获得程序的运行时间。
示例代码:
import datetime
start = datetime.datetime.now() # 获取开始时间
# 执行你的Python代码
for i in range(1000000):
pass
end = datetime.datetime.now() # 获取结束时间
print("程序运行时间:", (end-start).total_seconds(), "秒")
输出结果:
程序运行时间: 0.048455 秒
timeit模块
timeit模块是Python专门用于测试代码执行时间的模块,它可以在运行一个代码块多次后,返回这个代码块的平均执行时间。
示例代码:
import timeit
# 执行你的Python代码
def test():
for i in range(1000000):
pass
print("程序平均执行时间:", timeit.timeit(stmt=test, number=5), "秒")
输出结果:
程序平均执行时间: 0.18389538301135758 秒
timeit.timeit()函数中的number参数表示代码块执行的次数。
cProfile模块
cProfile模块是Python用于代码性能分析的模块,它能够收集程序各个函数的执行时间和调用次数等信息。
示例代码:
import cProfile
import re
def test():
for i in range(1000):
re.compile("foo|bar")
cProfile.run("test()")
输出结果:
2004 function calls in 0.000 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1000 0.000 0.000 0.000 0.000 re.py:191(compile)
1 0.000 0.000 0.000 0.000 {built-in method builtins.exec}
1 0.000 0.000 0.000 0.000 {built-in method builtins.print}
1 0.000 0.000 0.000 0.000 {built-in method builtins.re.compile}
1 0.000 0.000 0.000 0.000 {built-in method builtins.sum}
输出结果中的tottime列显示了每个函数的执行时间,单位是秒。
总结
Python提供了多种方式来获得程序的执行时间,其中time模块和datetime模块都是常用的方法,通过比较两者的执行时间可以看出time模块更加精确。timeit模块是专门用于性能测试的模块,而cProfile模块则可以帮助我们分析程序的性能瓶颈。不同的方法可根据需求灵活选择,以提高程序的性能。