当我们编写代码时,很可能会遇到需要统计代码运行时间的需求。Python提供了多种方法来解决这个问题。本篇文档将介绍使用Python统计代码运行时间的两种方法:time模块和profile模块。
一、使用time模块
Python的time模块提供了多个函数来进行时间计算。其中,最常用的是time()函数和clock()函数。
time()函数返回当前时间的时间戳,单位是秒。因此,我们可以在代码执行前和执行后获取时间戳,然后计算时间差来获得代码运行时间。示例代码如下:
import time
# 获取程序开始时间
start_time = time.time()
# 运行程序
for i in range(100000):
j = i * i
# 获取程序结束时间
end_time = time.time()
# 计算并输出程序运行时间(单位:秒)
print("程序运行时间:%f 秒" % (end_time - start_time))
clock()函数返回程序运行时间,单位是秒。在Unix系统下,clock()函数返回的是进程时间,即CPU运行时间。Windows系统下,clock()函数返回的是Wall Clock Time,即挂钟时间。因此,clock()函数常用于统计CPU时间。示例代码如下:
import time
# 获取程序开始时间
start_time = time.clock()
# 运行程序
for i in range(100000):
j = i * i
# 获取程序结束时间
end_time = time.clock()
# 计算并输出程序运行时间(单位:秒)
print("程序运行时间:%f 秒" % (end_time - start_time))
二、使用profile模块
Python的profile模块可以对程序进行性能分析,包括CPU时间、运行时间、函数调用次数等。在对程序进行性能分析时,我们可以使用cProfile.run()函数,该函数可以直接运行指定的Python程序,并输出分析报告。示例代码如下:
import cProfile
# 运行程序,并输出分析报告
cProfile.run('''
for i in range(100000):
j = i * i
''')
运行上述代码,将会输出如下分析报告:
100004 function calls in 0.025 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
100001 0.017 0.000 0.017 0.000 <string>:1(<module>)
1 0.008 0.008 0.025 0.025 <string>:1(<module>)
1 0.000 0.000 0.025 0.025 {built-in method builtins.exec}
1 0.000 0.000 0.025 0.025 {built-in method builtins.print}
1 0.000 0.000 0.025 0.025 {built-in method builtins.run}
在分析报告中,ncalls表示函数调用次数,tottime表示函数自身占用的CPU时间,percall表示函数平均调用时间,cumtime表示函数及其调用的子函数占用的CPU时间,同时还提供了Python文件名和行号以及函数名等信息。
综上所述,我们可以通过time模块的time()函数和clock()函数来计算代码运行时间,也可以使用profile模块来进行性能分析。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Python统计代码运行时间的两种方法 - Python技术站