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调用浏览器并打开一个网址的例子
Jun 05 Python
Python内置函数Type()函数一个有趣的用法
Feb 18 Python
Python map和reduce函数用法示例
Feb 26 Python
Python实现生成简单的Makefile文件代码示例
Mar 10 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
Python实现快速排序的方法详解
Oct 25 Python
Python any()函数的使用方法
Oct 28 Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 Python
Django框架之中间件MiddleWare的实现
Dec 30 Python
Python识别html主要文本框过程解析
Feb 18 Python
Python extract及contains方法代码实例
Sep 11 Python
Django-silk性能测试工具安装及使用解析
Nov 28 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 5.0 Pear安装方法
2006/12/06 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
php输出xml格式字符串(用的这个)
2012/07/12 PHP
php数据类型判断函数有哪些
2013/09/23 PHP
php中in_array函数用法探究
2014/11/25 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
javascript 面向对象继承
2009/11/26 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
js弹出模式对话框,并接收回传值的方法
2013/03/12 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
package.json文件配置详解
2017/06/15 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
python mysqldb连接数据库
2009/03/16 Python
初步探究Python程序的执行原理
2015/04/11 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
Python数据正态性检验实现过程
2020/04/18 Python
python 19个值得学习的编程技巧
2020/08/15 Python
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
材料员岗位职责
2014/03/13 职场文书
关于青春的演讲稿
2014/05/05 职场文书
党的群众路线对照检查材料范文
2014/09/24 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
撤诉申请怎么写
2015/05/19 职场文书
工程进度款催款函
2015/06/24 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python