iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中计时,看这一篇就够了
  • 513
分享到

Python中计时,看这一篇就够了

这一就够了Python 2023-01-31 07:01:25 513人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

计时对于了解程序的性能是很关键的部分。 本文讨论了python 2和Python 3中计时方法,并完成了一个通用的计时装饰器。 一、python2和python3的通用计时方法 由于python2和3里面的计时函数是不一样的,建议使用ti

计时对于了解程序的性能是很关键的部分。

本文讨论了python 2和Python 3中计时方法,并完成了一个通用的计时装饰器。

一、python2和python3的通用计时方法
由于python2和3里面的计时函数是不一样的,建议使用timeit模块中的timeit.default_timer()

由timeit.default_timer()的官方文档可知,计时时间精度和平台以及使用的函数有关:

"Define a default timer, in a platfORM-specific manner. On windows, time.clock() has microsecond granularity, but time.time()’s granularity is 1/60th of a second. On Unix, time.clock() has 1/100th of a second granularity, and time.time() is much more precise. On either platform, default_timer() measures wall clock time, not the CPU time. This means that other processes running on the same computer may interfere with the timing."

翻译过来就是,

“定义在默认的计时器中,针对不同平台采用不同方式。在Windows上,time.clock()具有微秒精度,但是time.time()精度是1/60s。在Unix上,time.clock()有1/100s精度,而且time.time()精度远远更高。在另外的平台上,default_timer()测量的是墙上时钟时间,不是CPU时间。这意味着同一计算机的其他进程可能影响计时。”

具体区别可以查看python2和3中timeit的实现:

python2中:

if sys.platform == "win32":
    # On Windows, the best timer is time.clock()
    default_timer = time.clock
else:
    # On most other platforms the best timer is time.time()
    default_timer = time.time
python3中:

default_timer = time.perf_counter
再由time.clock()的官方文档可以看出:

"Deprecated since version 3.3: The behaviour of this function depends on the platform: use perf_counter() or process_time() instead, depending on your requirements, to have a well defined behaviour."

翻译过来就是:

“python3.3版本后time.clock()就过时了:这个函数的行为受平台影响,用time.perf_counter()”或者time.process_time()代替来得到一个定义更好的行为,具体取决于你的需求。”

更多详细信息请看官方文档中的time.get_clock_info()

二、方便使用的计时装饰器
这一部分把计时函数写成python的装饰器形式,这样使用的时候只要在函数的定义前面加上“@装饰器名称”即可。

具体实现和测试代码如下,参考了《Fluent Python》7.7节的相关内容,并参考本文第一部分改成了Python2和Python3通用的版本。

import time, timeit
 
def clock(func):
    def clocked(*args):
        t0 = timeit.default_timer()
        result = func(*args)
        elapsed = timeit.default_timer() - t0
        name = func.__name__
        arg_str = ', '.join(repr(arg) for arg in args)
        print('[%0.8fs] %s(%s) -> %r' % (elapsed, name, arg_str, result))
        return result
    return clocked
 
@clock
def run(seconds):
    time.sleep(seconds)
    return time
 
if __name__ == '__main__':
   run(1)
其中的run函数只是为了测试,可以换成其他你需要的函数。只要在前面加上@clock就可以了。
--------------------- 
作者:FlyingPie 
来源:CSDN 
原文:https://blog.csdn.net/bobauditore/article/details/79377679?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

--结束END--

本文标题: Python中计时,看这一篇就够了

本文链接: https://www.lsjlt.com/news/190828.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中计时,看这一篇就够了
    计时对于了解程序的性能是很关键的部分。 本文讨论了Python 2和python 3中计时方法,并完成了一个通用的计时装饰器。 一、python2和python3的通用计时方法 由于python2和3里面的计时函数是不一样的,建议使用ti...
    99+
    2023-01-31
    这一 就够了 Python
  • Python eval() 函数看这一篇就够了
    目录一、语法和参数二、expression参数示例三、globals参数示例四、locals参数示例五、eval函数的危险之处六、eval()函数官方文档附eval()函数常见作用有...
    99+
    2024-04-02
  • Python:openpyxl这一篇就够了
    各位好,我是轩哥啊哈~ 本文展示如何使用 openpyxl 库在 Python 中使用 Excel 文件。openpyxl 是用于读取和写入 Excel 2010 xlsx / xlsm / xltx / xltm 文件的 Python 库...
    99+
    2023-08-31
    excel python pyqt pygame pip
  • Python 函数式编程,看这一篇就够了!
    本文对 Python 中的函数式编程技术进行了简单的入门介绍。头等函数在 Python 中,函数是「头等公民」(first-class)。也就是说,函数与其他数据类型(如 int)处于平等地位。因而,我们可以将函数赋值给变量,也可以将其作为...
    99+
    2023-05-14
    Python 函数式编程
  • Java数组看这篇就够了
    目录一、前言二、数组的定义数组定义的形式:三、数组的初始化方式:1.动态初始化2.静态初始化四、索引访问数组五、数组长度表示六、遍历数组方法一: 方法二:实例演示:七、数组的初始值总...
    99+
    2024-04-02
  • python操作Excel神器openpyxl看这一篇就够了
    目录Excel xlsxOpenpyxl 创建新文件Openpyxl 写入单元格Openpyxl 附加值OpenPyXL 读取单元格OpenPyXL 读取多个单元格Openpyxl ...
    99+
    2023-05-14
    openpyxl库是什么 openpyxl库教程 openpyxl库的主要用途
  • C++内存管理看这一篇就够了
    目录1 内存分布图2 C语言和C++内存分配实现2.1 C语言实现2.2 C++实现new的原理delete的原理3 C语言和C++内存管理区别4 内存泄漏总结1 内存分布图 注...
    99+
    2024-04-02
  • Mybatis配置解析看这一篇就够了
    目录核心配置文件environments元素mappers元素Mapper文件Properties优化typeAliases优化生命周期和作用域总结核心配置文件 mybat...
    99+
    2024-04-02
  • ES学习看这一篇文章就够了
    第一章 ES简介 第1节 ES介绍 1234 1、Elasticsearch是一个基于Lucene的搜索服务器2、提供了一个分布式的全文搜索引擎,基于restful web接口3、Elasticsearch是用Java语言开发的,基于A...
    99+
    2023-09-01
    elasticsearch 大数据 学习 java
  • 23种设计模式合集,只看这一篇就够了
    目录 1、单例模式2、简单工厂模式3、工厂方法模式4、抽象工厂模式5、装饰器模式6、适配器模式7、观察者模式8、迭代器模式9、原型模式10、命令模式11、策略模式12、责任链模式13、代理模式...
    99+
    2023-08-31
    设计模式 单例模式 php
  • Python爬虫入门这一篇就够了
    何谓爬虫 所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本。万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息。 爬虫三要素 抓取 分析 存储 基础的抓取操作 1、urllib 在Pyt...
    99+
    2023-01-31
    这一 爬虫 入门
  • Java迭代器详解,看这一篇就够了
    文章目录 🚩Java 迭代器详解📚迭代器的定义📒认识Iterator✏️类结构图✒️Iterable接口🖍️Iterator接口📃Iterat...
    99+
    2023-08-19
    java 开发语言 后端
  • Git【入门】这一篇就够了
    版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。除了项目,你可以对任何类型的文件进行版本控制。采用版本控制系统(VCS)是个明智的选择。 有了它就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时...
    99+
    2023-06-04
  • Java学习路线图,看这一篇就够了!
    主要分为三阶段 | 耗废1024根秀发,Java学习路线图来了,整合了自己所学的所有技术整理出来的2022最新版Java学习路线图,适合于初、中级别的Java程序员。可以按照这个序号来学习的,或者把知识过一遍,建议收藏。 阶段一:Java...
    99+
    2023-08-31
    java spring 后端 maven servlet
  • Spring入门这一篇就够了
    前言前面已经学习了Struts2和Hibernate框架了。接下来学习的是Spring框架…本博文主要是引入Spring框架…Spring介绍Spring诞生:创建Spring的目的就是用来替代更加重量级的的企业级Java技术简化Java的...
    99+
    2023-06-02
  • Mac zsh: command not found: pyinstaller。[看这一篇就够了]
    文章目录 一、问题总结与解决方法。1) pyinstaller版本问题2) 安装后仍然显示command not found2.1) macOS Catalina(10.15) 之前系统。2.2) macOS Catalina(10...
    99+
    2023-08-19
    macos python linux bash
  • 【C++】Cmake使用教程(看这一篇就够了)
    文章目录 引言一 环境搭建二 简单入门2.1 项目结构2.2 示例源码2.3 运行查看 三 编译多个源文件3.1 在同一个目录下有多个源文件3.1.1 简单版本3.1.1.1 项目结构3.1.1.2 示例代码3.1.1.3 运...
    99+
    2023-08-16
    c++ linux java CMakeLists
  • 数据库、MySQL与Python这一篇就够了
    数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。 我们也可以将数据存储在文件中,但是在文件中读写数据速度相...
    99+
    2023-10-27
    数据库 mysql
  • Redis主从复制看这篇就够了
    什么是主从复制持久化保证了即使 redis 服务重启也会丢失数据,因为 redis 服务重启后会将硬盘上持久化的数据恢复到内存中,但是当 redis 服务器的硬盘损坏了可能会导致数据丢失,如果通过 redis 的主从复制机制就可以避免这种单...
    99+
    2023-06-02
  • MySQL事务(transaction)看这篇就足够了
    目录mysql事务处理(TransAction)一、事务的四个特性(ACID)【面试常考项】二、事务的分类三、开启事务的步骤四、事务并发时出现的问题五、事务的隔离级别总结MySQL事务处理(TransAction) 思考...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作