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 03 Python
Python的Flask框架中配置多个子域名的方法讲解
Jun 07 Python
Python数据拟合与广义线性回归算法学习
Dec 22 Python
Python实现中一次读取多个值的方法
Apr 22 Python
通过Python模块filecmp 对文件比较的实现方法
Jun 29 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
python Pillow图像处理方法汇总
Oct 16 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 Python
python中slice参数过长的处理方法及实例
Dec 15 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
PHP通用分页类page.php[仿google分页]
2008/08/31 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
PHP内核探索:变量概述
2014/01/30 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
详解vue中axios的封装
2018/07/18 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
Python 2与Python 3版本和编码的对比
2017/02/14 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Python中单、双下划线的区别总结
2017/12/01 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
python 实现批量替换文本中的某部分内容
2019/12/13 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
Python 如何测试文件是否存在
2020/07/31 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
广告学专业应届生求职信
2013/10/01 职场文书
体育教育专业自荐信范文
2013/12/20 职场文书
党员剖析材料范文
2014/09/30 职场文书
大学生实习介绍信
2015/05/05 职场文书
旷工检讨书大全
2015/08/15 职场文书
SQL Server Agent 服务无法启动
2022/04/20 SQL Server