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 字符串定义
Sep 25 Python
Python遍历目录中的所有文件的方法
Jul 08 Python
django自带的server 让外网主机访问方法
May 14 Python
Python做智能家居温湿度报警系统
Sep 25 Python
python 将字符串完成特定的向右移动方法
Jun 11 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
基于python求两个列表的并集.交集.差集
Feb 10 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
Python requests.post方法中data与json参数区别详解
Apr 30 Python
python接口自动化之ConfigParser配置文件的使用详解
Aug 03 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
Python基础之元类详解
Apr 29 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/11/16 PHP
php生成略缩图代码
2012/07/16 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
xtree.js 代码
2007/03/13 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
JQUERY操作JSON实例代码
2010/02/09 Javascript
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
PHP守护进程实例
2015/03/06 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
Python的垃圾回收机制详解
2019/08/28 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
详解Python模块化编程与装饰器
2021/01/16 Python
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
交警个人先进事迹材料
2014/05/11 职场文书
2014年冬季防火方案
2014/05/21 职场文书
合作意向书
2014/07/30 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
2015大学生求职信范文
2015/03/20 职场文书
结婚十年感言
2015/07/31 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书