百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

一日一技:Python中的timeit()方法

bigegpt 2025-01-02 14:40 57 浏览


timeit()方法


python中的timeit()方法, 它用于获取代码的执行时间。该库将代码语句运行一百万次,并提供从集合中花费的最短时间。这是一种有用的方法,有助于检查代码的性能。


语法如下:

timeit.timeit(stmt, setup,timer, number)

参数解析:

  • stmt:这将采用您要测量其执行时间的代码。默认值为“pass”。
  • setup:这将包含需要在stmt之前执行的设置详细信息。默认值为“ pass”。
  • timer:它将具有计时器值,timeit()已经设置了默认值,我们可以忽略它。
  • number:stmt将按照此处给出的编号执行。默认值为1000000。


要使用timeit(),我们需要导入模块,如下所示:

import timeit


以下是timeit()函数的一个简单示例

代码示例1:

# testing timeit()
import timeit
print(timeit.timeit('output = 10*5'))

输出:

0.06127880399999999

我们已经看到了一个简单的示例,该示例为我们提供了简单代码语句output = 10*5的执行时间,执行该命令所花费的时间为0.06127880399999999。



在python代码中计时多行


我们可以使用分号或通过将包含在代码中的代码保存为带三引号的字符串来在timeit.timeit()中执行两行代码。


示例1:使用分号


import timeit
print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))

输出:

The time taken is  0.182619178



示例2:使用三引号

# testing timeit()
import timeit
import_module = "import random"
testcode = ''' 
def test(): 
    return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_module))

输出:

0.46715912400000004


timeit-方法

以下是2种重要的timeit方法:

  • timeit.default_timer():执行时将返回默认时间。
  • timeit.repeat(stmt,setup,timer,repeat,number):与timeit()相同,但是随着重复,timeit()被称为重复次数。

范例1:

# testing timeit()
import timeit
import_module = "import random"
testcode = ''' 
def test(): 
    return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_module))

输出:

The start time is : 0.220261875
The time difference is : 0.0004737320000000045



范例2:

timeit.default_timer()方法

# testing timeit()
 
import timeit
import random
 
def test(): 
    return random.randint(10, 100)
 
starttime = timeit.default_timer()
print("The start time is :",starttime)
test()
print("The time difference is :", timeit.default_timer() - starttime)

输出:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]


范例3:

timeit.repeat()方法

# testing timeit()
import timeit
import_module = "import random"
testcode = ''' 
def test(): 
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module, repeat=5))

输出:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]



timeit.repeat()的方法类似于timeit.timeit()方法,唯一的区别是,它采用了repeat()参数,并以数组格式返回执行时间,并按重复编号指定值。



在命令行界面中执行计时功能timeit.timeit()


在命令行中操作,timeit()函数的语法如下:

>>> import timeit
>>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
The time taken is  0.15048536300000137
>>>


其中,命令行参数:


  • -n N:希望代码执行的次数。
  • -r N:希望timeit()函数重复的次数
  • -s S:它将具有设置详细信息,这些详细信息将在代码执行之前执行。
  • -t:为此,可以利用time.time()
  • -c:为此,可以利用time.clock()
  • -h:寻求帮助
  • code statement:代码详细信息。


范例如下:

>>> import timeit
>>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
The time taken is  0.15048536300000137
>>>




我们也可以在命令行中执行另一种方式,如下所示:

>>> import timeit
>>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
The time taken is  0.15048536300000137
>>>

为什么timeit()是衡量Python代码执行时间的最佳方法?

我们认为timeit()是衡量执行时间的最佳方法有以下几个原因。


  • 它运行代码语句100万次,这是默认值,并从中返回最短的时间。还可以通过在time()函数中设置参数数来增加/减少一百万。
  • 在执行测试时,每次按time()函数都会禁用垃圾收集。
  • 根据使用的操作系统,timeit()在内部获取准确的时间。例如,对于Windows操作系统,它将使用time.clock();对于Mac和Linux,它将使用time.time()。

摘要:


timeit()方法用于获取给定代码的执行时间

与timeit()一起使用的参数:


  • stmt:这将使用您要测量执行时间的代码
  • setup:这将包含需要在stmt之前执行的设置详细信息
  • timer:它将具有计时器值,timeit()已经设置了默认值,我们可以忽略它。
  • number:stmt将按照此处给出的编号执行。

你学习到了吗?

欢迎在下方留言,

谢谢关注!

相关推荐

数据中台与业务中台总体技术架构设计方案

《数据中台与业务中台总体技术架构设计方案》提出**“开放、稳定、滋养”三原则**,强调通过统一技术架构与框架破除烟囱式系统,构建**“业务中台+数据中台”闭环体系**。方案主张从单体架...

三分钟摸清楚什么叫前后端分离(什么是前后端分离架构?)

什么叫前后端分离?其实,前后端分离的初衷是为了分离前后端开发人员的职责,解决开发模式的问题。说到底,前后端分离就是将前端视图和后端数据进行分离,这样,后端只需要提供接口(后端数据)给前端,而前端也可以...

刚刚,给学妹普及了登录的两大绝学

今天跟大家聊一个比较基础的话题,就是实现登录的方式有哪些?适合刚入行的朋友。华山之Session绝学Session我们称之为会话控制,是一种在服务器端保持会话状态的解决方案。通俗点来讲就是客户...

6种微服务RPC框架,你知道几个?(grpc是微服务框架吗)

开源RPC框架有哪些呢?一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的。跟语言平台绑定的开源RPC框架主要有下面几种。Dubbo:国内最早开源的RPC框架,由阿里巴巴公司...

微服务中,Spring Cloud 有哪些注册中心?

SpringCloud是微服务架构中经常使用的一个框架,它提供了一系列工具来帮助开发者构建和管理分布式系统,而服务注册中心又是微服务架构中一个关键组件。那么,SpringCloud支持哪些注册...

Eureka的自我保护机制(eureka自我保护机制原理)

最近遇到一个问题,服务之间调用报错,显示无法路由到指定服务,但是对应的服务是启动的,查询eureka,结果eureka上显示如下,所有实例均消失,我个人对注册中心并没有什么研究,进行正好借此机会简单总...

eureka、zookepeer、nacos的区别(eureka和nacos哪个更好)

前言随着微服务被各大企业应用在项目中,微服务的框架也被更多人学习和使用,但是大部分情况下都是停留在应用层。一、演变过程1.1服务注册和发现基本概念服务注册:将某个或者某些服务的信息(模块的ip和...

40K+Star!Mall电商实战项目开源,附源码、教程合集

最近看了下我的Github,发现mall项目已经突破40K+Star,有点小激动!记得去年8月的时候mall项目刚过20K+Star,时隔1年多已经增长到了40K+Star。今天跟大家聊聊mall项目...

SpringCloud 常见注册中心的比较(springcloud注册过程)

一、概述springcloud是一个非常优秀的微服务框架,要管理众多的服务,就需要对这些服务进行治理,也就是我们说的服务治理,服务治理的作用就是在传统的rpc远程调用框架中,管理每个服务与每个服务之间...

简单介绍Nacos服务注册中心(nacos注册中心有什么用)

Nacos是阿里开源的一个新框架,在分布式的架构中,Nacos同时扮演着服务注册中心和配置中心的角色。今天主要讲的是Nacos作为服务注册中心。分布式中著名的CAP理论,任何一种服务注册中心都只能实现...

入门注册中心——consul(注册中心怎么注册)

基础概念什么是注册中心随着微服务理论发展的成熟,越来越多互联网公司采用微服务架构来支持业务发展。各个微服务之间都需要通过注册中心来实现自动化的注册和发现。注册中心主要有三种角色:服务提供者(RPCS...

08 Eureka的基础知识(eureka replication)

Eureka是Netflix开发的服务发现框架,SpringCloud将它集成在自己的子项目spring-cloud-netflix中,实现SpringCloud的服务发现功能。上图简要描述了Eur...

微服务架构中的服务注册与发现有哪些?Zookeeper、Eu

“大家好,我是码哥,《Redis高手心法》作者,本章节选自《Java面试高手心法58讲》专栏。随着单体应用的拆分,我们面临的首要问题就是采用哪种方式实现服务间的调用,像之前单体应用可能直接在配...

Eureka 都挂了,微服务还能调通吗?

如果你做过微服务开发,这个面试题应该能够立马答出来,如果你没做过微服务开发,但是学过一些SpringCloud组件的用法,这个问题可能要稍微想一下,但是也应该能够答出来。今天就来和大家说说这个问...

ZooKeeper、Eureka、Consul 、Nacos微服务注册中心对比

注册中心前言服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供...