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 30 Python
Python程序退出方式小结
Dec 09 Python
详解python 注释、变量、类型
Aug 10 Python
python读取Excel实例详解
Aug 17 Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
Pandas0.25来了千万别错过这10大好用的新功能
Aug 07 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
浅谈Python的方法解析顺序(MRO)
Mar 05 Python
使用pytorch 筛选出一定范围的值
Jun 28 Python
Python读取pdf表格写入excel的方法
Jan 22 Python
Python中非常使用的6种基本变量的操作与技巧
Mar 22 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中判断变量为空的几种方法分享
2013/08/26 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
smarty缓存用法分析
2014/12/16 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
改进Django中的表单的简单方法
2015/07/17 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
python中reduce()函数的使用方法示例
2017/09/29 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
python3.7环境下安装Anaconda的教程图解
2019/09/10 Python
编写python代码实现简单抽奖器
2020/10/20 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
速比涛英国官网:Speedo英国
2019/07/15 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
机关领导查摆四风思想汇报
2014/09/13 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
机械生产实习心得体会
2016/01/22 职场文书