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操作Elasticsearch数据索引的教程
Apr 08 Python
Python中if __name__ == '__main__'作用解析
Jun 29 Python
Python 2.x如何设置命令执行的超时时间实例
Oct 19 Python
机器学习python实战之手写数字识别
Nov 01 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
Python 等分切分数据及规则命名的实例代码
Aug 16 Python
Python实时监控网站浏览记录实现过程详解
Jul 14 Python
Python collections.deque双边队列原理详解
Oct 05 Python
Python基于内置函数type创建新类型
Oct 22 Python
Django怎么在admin后台注册数据库表
Nov 14 Python
Python OpenCV快速入门教程
Apr 17 Python
使用Python开发冰球小游戏
Apr 30 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/03 冲泡冲煮
php入门之连接mysql数据库的一个类
2012/04/21 PHP
深入php list()函数的详解
2013/06/05 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
2017/04/10 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
Python3.x版本中新的字符串格式化方法
2015/04/24 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
Python 实现微信自动回复的方法
2020/09/11 Python
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
师范大学应届生求职信
2013/11/21 职场文书
文化与传播毕业生求职信
2014/03/09 职场文书
员工安全承诺书
2014/05/22 职场文书
实习护士自荐信
2015/03/25 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
Python WSGI 规范简介
2021/04/11 Python
Python import模块的缓存问题解决方案
2021/06/02 Python