python 统计代码耗时的几种方法分享

时间戳相减

在代码执行前后各记录一个时间点,两个时间戳相减即程序运行耗时。

获取时间戳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 统计代码耗时的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python实现bilibili时间长度查询的示例代码

    说明:最近在B站看一些材料力学视频时候,感觉有一些分集狂魔的分集真的很恐怖,有的甚至上百集,因此决定写个小脚本每次分析下到底这个系列视频到底有多长. 好了,下面是分析过程: 第一步当然是打开一个视频 接着第二部右键查看源代码 既然我们是要查找时间,然后我就搜索time相关的,哟!,还真有,其中有个timelength,英语有点基础的应该也能读出,这不就是时长的意思.哈哈哈,这也太简单了,但是又发现高兴太早了,这个经过不论是除60还是除3600都无法得到需要的结果,就在这时,突然一个乘法口诀蹦了出

  • Python文件时间操作步骤代码详解

    一 按时间创建文件 源码 # 截图方式二 # coding=utf-8 import os import time # 当前年月日时分秒时间 2020-01-16-10_11_49 picture_time = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) #当前年月日 2020-01-16 directory_time = time.strftime("%Y-%m-%d", time

  • Python实现进度条和时间预估的示例代码

    一.前言 在python当中可以用进度条来显示工作的进度,比如for循环的进度或者一些模型训练的进度. 在这里可以使用progressbar包以及tqdm包来实现. 使用pip install progressbar 安装progressbar包. 使用pip install tqdm安装progressbar包. 二.代码 1. progressbar import progressbar import time //定义进度条的显示样式 widgets = ["doing task: &qu

  • python 代码运行时间获取方式详解

    我们知道为了提高代码的运行速度,我们需要对书写的python代码进行性能测试,而代码性能的高低的直接反馈是电脑运行代码所需要的时间.这里将介绍四种常用的测试代码运行速度的方法. 第一种:使用time模块对代码的运行时间进行统计,代码如下: import time class Debug: def mainProgram(self): start_time = time.time() for i in range(100): print(i) end_time = time.time() prin

  • python 实现仿微信聊天时间格式化显示的代码

    时间格式化所使用的算法为: """ 1.如果不在同一年 '%Y年%m月%d日' 2.如果在同一年 2.1 如果在同一个月 2.1.1 如果在同一天 '%H:%M' 2.1.2 如果是昨天 '昨天 %H:%M' 2.1.2 如果在同一周 '周x 00:00' 去除周日 的情况 2.2 否则 '%m月%d日 %H:%M' """ 具体的python代码如下: def fmtdt_str(dtstr, fmt): result = "&quo

  • Python统计时间内的并发数代码实例

    这篇文章主要介绍了Python统计时间内的并发数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python实现并发的手段: 1.操作系统提供:进程.线程: 2.编程语言提供:协程:用户空间的调度(py3): # coding:utf-8 # 1.导入模块 # datatime模块用于定义时间及时间的加减操作 # MySQLdb模块用于Python2.0连接数据库,Python3.0连接数据库使用pymysql # xlwt模块是exc

  • Python sqlalchemy时间戳及密码管理实现代码详解

    一.时间戳 实际开发中,我们一般希望create_time和update_time这两个属性能自动设置,所以在建表的时候需要在model上特殊处理一下: from sqlalchemy.sql import func class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key = True) email = db.Column(db.String(128)) password_hash =

  • Python代码执行时间测量模块timeit用法解析

    1.timeit模块 timeit模块可以用来测试一小段python代码的执行速度 class timeit.Timer(stmt = 'pass',setup = 'pass',timer=<timer function>) Timer是测量小段代码执行速度的类 stmt参数是要测试的代码语句(statment); setup参数是运行代码时需要的设置: timer参数是一个定时器函数,与平台有关(windows,unix,linux,mac). timeit.timer(number =

  • 如何基于python测量代码运行时间

    这篇文章主要介绍了如何基于python测量代码运行时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python 社区有句俗语: "python自己带着电池" ,别自己写计时框架. Python3.2具备一个叫做 timeit 的完美计时工具可以测量python代码的运行时间. timeit 模块: timeit 模块定义了接受两个参数的 Timer 类.两个参数都是字符串. 第一个参数是你要计时的语句或者函数. 传递给 Timer

  • Python计算公交发车时间的完整代码

    问题描述 公交车每天会按照一定间隔发车 , 由于不同时间段经过拥堵路段的用时不 - 样,所以给定路线下公交车每趟 ( 每车次 ) 行驶时间差异也很大,现在给出某路线某天各车次公交车离开始发站和到达终点站的时间,请求出该天耗时最长车次的行驶时间.输入说明 : 第 - - 行是一个整数 N, 示接下来的公交车车次的总数.之后是 N 行,每行开始是字母 S 或 Z, 表示是从始发站开出还是终点站开出.之后两个时间表示起始时间,时间给出方式为小时 + 分钟的形式,如 S 0830 1210 表示 8 点

  • 利用4行Python代码监测每一行程序的运行时间和空间消耗

    Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言,其具有高可扩展性和高可移植性,具有广泛的标准库,受到开发者的追捧,广泛应用于开发运维(DevOps).数据科学.网站开发和安全.然而,它没有因速度和空间而赢得任何称赞,主要原因是Python是一门动态类型语言,每一个简单的操作都需要大量的指令才能完成. 所以这更加需要开发者在使用Python语言开发项目时协调好程序运行的时间和空间. 1.分析时间耗时 分析项目消耗的时间消耗,依托于line_profiler模块,其可以计

  • python获取本周、上周、本月、上月及本季的时间代码实例

    前言 本文主要介绍的是关于利用python 获取本周,上周,本月,上月,本季的时间,话不多说了,来一起看看实现的方法吧 示例代码: import datetime from datetime import timedelta now = datetime.datetime.now() # 今天 today = now print('--- today = {}'.format(today)) # 昨天 yesterday = now - timedelta(days=1) print('---

随机推荐