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使用urllib模块的urlopen超时问题解决方法
Nov 08 Python
详细探究Python中的字典容器
Apr 14 Python
python运行其他程序的实现方法
Jul 14 Python
Python内建函数之raw_input()与input()代码解析
Oct 26 Python
Python用61行代码实现图片像素化的示例代码
Dec 10 Python
Python面向对象程序设计之私有属性及私有方法示例
Apr 08 Python
Python中的 is 和 == 以及字符串驻留机制详解
Jun 28 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
Pytorch的mean和std调查实例
Jan 02 Python
Python抓包程序mitmproxy安装和使用过程图解
Mar 02 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 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
文件上传类
2006/10/09 PHP
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
php debug 安装技巧
2011/04/30 PHP
Php图像处理类代码分享
2012/01/19 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
javascript去除空格方法小结
2015/05/21 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
numpy.random.seed()的使用实例解析
2018/02/03 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
python语言基本语句用法总结
2019/06/11 Python
Django模板Templates使用方法详解
2019/07/19 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
产品销售员岗位职责
2013/12/18 职场文书
社区党员先进事迹
2014/01/22 职场文书
论文诚信承诺书
2014/05/23 职场文书
十八大宣传标语
2014/10/09 职场文书
工厂见习报告范文
2014/10/31 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
送给小学生的暑假礼物!小学生必背99首古诗
2019/07/02 职场文书
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技