python 统计代码耗时的几种方法分享


Posted in Python onApril 02, 2021

时间戳相减

在代码执行前后各记录一个时间点,两个时间戳相减即程序运行耗时。

获取时间戳time.time()

import time

start_time = time.time()
sum = 0
for i in range(100000000):
    sum += i
print(sum)

end_time = time.time()
print("耗时: {:.2f}秒".format(end_time - start_time))

输出:
4999999950000000
耗时: 10.53秒

获取当前日期 datetime.datetime.now()

import datetime

start_time = datetime.datetime.now()
sum = 0
for i in range(100000000):
    sum += i
print(sum)

end_time = datetime.datetime.now()
print("耗时: {}秒".format(end_time - start_time))

装饰器

装饰器是一个装饰函数的函数,能够在不改变函数源码和函数调用方式的情况下给函数增加新的功能。很多时候统计函数的耗时,可以使用装饰器实现。

import time

def 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_time
def test():
    time.sleep(2)  # 模拟运行2s

test()

输出:
耗时:2.000781536102295秒

timeit模块

timeit 模块提供了测量 Python 小段代码执行时间的方法,可以在命令行界面直接使用,也可以通过导入模块进行调用。

语句执行 number 次的时间

#导入timeit.timeit
from 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-07
0.04841430000000002

计算函数的执行时间

from timeit import timeit
def 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 timeit
def 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 cProfile
def func(a):
    sum = 0
    for i in range(a):
        sum += i
    return sum
if __name__ == '__main__':
    cProfile.run("func(10000000)")

python 统计代码耗时的几种方法分享

以上就是python 统计代码耗时的几种方法分享的详细内容,更多关于python 统计代码耗时的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
在Python中使用列表生成式的教程
Apr 27 Python
利用Python半自动化生成Nessus报告的方法
Mar 19 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
基于python plotly交互式图表大全
Dec 07 Python
Django分组聚合查询实例分享
Apr 29 Python
Python实现UDP程序通信过程图解
May 15 Python
python实现人工蜂群算法
Sep 18 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
Pycharm快捷键配置详细整理
Oct 13 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
Feb 23 Python
python - asyncio异步编程
Apr 06 Python
python 遍历磁盘目录的三种方法
Apr 02 #Python
python 如何在 Matplotlib 中绘制垂直线
在Windows下安装配置CPU版的PyTorch的方法
PyQt5 QThread倒计时功能的实现代码
Apr 02 #Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
You might like
PHP初学者头疼问题总结
2006/07/08 PHP
smarty缓存用法分析
2014/12/16 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
Vue快速实现通用表单验证功能
2019/12/05 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
Python 抓取动态网页内容方案详解
2014/12/25 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python中is和==的区别详解
2018/11/15 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
python数据挖掘需要学的内容
2019/06/23 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
python爬虫 正则表达式解析
2019/09/28 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
销售副总经理岗位职责
2013/12/11 职场文书
优秀员工推荐信
2014/05/10 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
高三英语教学反思
2016/03/03 职场文书
晚会开幕词范文
2016/03/04 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书