python统计代码耗时的方法有哪些
这篇文章将为大家详细讲解有关python统计代码耗时的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
时间戳相减
在代码执行前后各记录一个时间点,两个时间戳相减即程序运行耗时。
获取时间戳time.time()
import timestart_time = time.time()sum = 0for i in range(100000000): sum += iprint(sum)end_time = time.time()print("耗时: {:.2f}秒".format(end_time - start_time))输出:4999999950000000耗时: 10.53秒
获取当前日期 datetime.datetime.now()
import datetimestart_time = datetime.datetime.now()sum = 0for i in range(100000000): sum += iprint(sum)end_time = datetime.datetime.now()print("耗时: {}秒".format(end_time - start_time))
装饰器
装饰器是一个装饰函数的函数,能够在不改变函数源码和函数调用方式的情况下给函数增加新的功能。很多时候统计函数的耗时,可以使用装饰器实现。
import timedef get_time(f): def inner(*arg,**kwarg): s_time = time.time() res = f(*arg,**kwarg) e_time = time.time() print('耗时:{}秒'.format(e_time - s_time)) return res return inner@get_timedef test(): time.sleep(2) # 模拟运行2stest()输出:耗时:2.000781536102295秒
timeit模块
timeit 模块提供了测量 Python 小段代码执行时间的方法,可以在命令行界面直接使用,也可以通过导入模块进行调用。
语句执行 number 次的时间
#导入timeit.timeitfrom timeit import timeit#看x=1的执行一次的时间(number可以省略,缺省为1000000)t1 = timeit('x=1', number=1)print(t1)#一个列表生成器的执行时间,执行10000次:t2 = timeit('[i for i in range(100) if i%2==0]', number=10000)print(t2)输出:4.0000000001150227e-070.04841430000000002
计算函数的执行时间
from timeit import timeitdef func(a): sum = 0 for i in range(a): sum += i return sum# timeit(函数名_字符串,运行环境_字符串,number=运行次数)t = timeit('func(10000000)', 'from __main__ import func', number=1)print(t)输出:0.4887406
重复调用 timeit()
repeat() 方法相当于持续多次调用 timeit() 方法并将结果返回为一个列表。repeat 参数指定重复的次数,number 参数传递给 timeit() 方法的 number 参数。
import timeitdef func(a): sum = 0 for i in range(a): sum += i return sum# timeit(函数名_字符串,运行环境_字符串,number=运行次数,repeat=重复次数,repeat=5)t = timeit.repeat('func(100000)', 'from __main__ import func', number=100, repeat=5)print(t)
cProfile性能分析工具
cProfile(语言编写的测试模块)是一个标准库内建的性能分析工具,可以在标准输出中看到每一个函数被调用的次数和运行的时间,从而找到程序的性能瓶颈,从而有针对性的进行性能优化。
Python代码性能分析之cProfile
import cProfiledef func(a): sum = 0 for i in range(a): sum += i return sumif __name__ == '__main__': cProfile.run("func(10000000)")
关于“python统计代码耗时的方法有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341