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中signal包的使用
Nov 13 Python
python图像常规操作
Nov 11 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
用TensorFlow实现lasso回归和岭回归算法的示例
May 02 Python
Python OpenCV读取png图像转成jpg图像存储的方法
Oct 28 Python
解决python3运行selenium下HTMLTestRunner报错的问题
Dec 27 Python
python日期相关操作实例小结
Jun 24 Python
Python任务调度模块APScheduler使用
Apr 15 Python
python2.7使用scapy发送syn实例
May 05 Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 Python
python实现感知机模型的示例
Sep 30 Python
如何利用python读取micaps文件详解
Oct 18 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+java实现自动新闻滚动窗口
2006/10/09 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
php字符串截取的简单方法
2013/07/04 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
总结一些js自定义的函数
2006/08/05 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
Python全局变量操作详解
2015/04/14 Python
Python下载网络小说实例代码
2018/02/03 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
临床医学大学生求职信
2013/09/28 职场文书
自荐信包含哪些内容
2013/10/30 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
小学师德师风整改措施
2014/10/27 职场文书
2015年司机工作总结
2015/04/23 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python