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 02 Python
基于python编写的微博应用
Oct 17 Python
零基础写python爬虫之打包生成exe文件
Nov 06 Python
Python读取视频的两种方法(imageio和cv2)
Apr 15 Python
Python向Excel中插入图片的简单实现方法
Apr 24 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
自学python的建议和周期预算
Jan 30 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 Python
python 求定积分和不定积分示例
Nov 20 Python
python中with用法讲解
Feb 07 Python
500行python代码实现飞机大战
Apr 24 Python
python将数据插入数据库的代码分享
Aug 16 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.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
PHP hex2bin()函数用法讲解
2019/02/25 PHP
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
简单介绍Python中的try和finally和with方法
2015/05/05 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
教学改革实施方案
2014/03/31 职场文书
平安工地建设方案
2014/05/06 职场文书
音乐学专业求职信
2014/07/22 职场文书
物业消防安全责任书
2014/07/23 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
golang使用map实现去除重复数组
2022/04/14 Golang