专栏首页python前行者python中的计时器timeit

python中的计时器timeit

通常在一段程序的前后都用上time.time(),然后进行相减就可以得到一段程序的运行时间,不过python提供了更强大的计时库:timeit

#导入timeit.timeit
from timeit import timeit  

#看执行1000000次x=1的时间:
timeit('x=1')

#看x=1的执行时间,执行1次(number可以省略,默认值为1000000):
timeit('x=1', number=1)

#看一个列表生成器的执行时间,执行1次:
timeit('[i for i in range(10000)]', number=1)

#看一个列表生成器的执行时间,执行10000次:
timeit('[i for i in range(100) if i%2==0]', number=10000)

测试一个函数的执行时间:

from timeit import timeit

def func():
    s = 0
    for i in range(1000):
        s += i
    print(s)

# timeit(函数名_字符串,运行环境_字符串,number=运行次数)
t = timeit('func()', 'from __main__ import func', number=1000)
print(t)

此程序测试函数运行1000次的执行时间

  • repeat:

由于电脑永远都有其他程序也在占用着资源,你的程序不可能最高效的执行。所以一般都会进行多次试验,取最少的执行时间为真正的执行时间。

from timeit import repeat

def func():
    s = 0
    for i in range(1000):
        s += i

#repeat和timeit用法相似,多了一个repeat参数,表示重复测试的次数(可以不写,默认值为3.),返回值为一个时间的列表。
t = repeat('func()', 'from __main__ import func', number=100, repeat=5)
print(t) 
print(min(t))

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [813]please specify path to jscs package

    pycharm打开js文件报错please specify path to 'jscs’package

    周小董
  • tf.summary.*函数

    在TensorFlow中,最常用的可视化方法有三种途径,分别为TensorFlow与OpenCv的混合编程、利用Matpltlib进行可视化、利用TensorF...

    周小董
  • 简书markdown教程

    ##1 支持 Markdown 的编辑器 ###Windows 推荐 Sublime Text 3,强大优雅的编辑器。 MarkdownPad,一款可以直...

    周小董
  • Python 代码优化技巧(一)

    对于and,应该把满足条件少的放在前面,这样当对于大量判断时, 满足条件少的情况直接回导致其后其他表达式不会计算从而节约时间(因为 False and True...

    py3study
  • MySQL索引为什么要用B+树实现?

    在从一堆数据中查找指定的数据时,我们常用的数据结构是哈希表和二叉查找树,表本质上就是一堆数据的集合,所以MySQL数据库用了B+树和哈希表来实现索引

    Java识堂
  • 为何不把握时间开发产品? 为何耗费宝贵的时间争论工作量? 将产品快速推向市场的铁三角: SEMAT Essence, 产品级敏捷与微服务架构

    假如,企业内的产品管理与研发团队,常常会耗费许多宝贵的时间,在争论所谓的 “需求的工作量”,“需求有无过载”,“需求价值的优先级”,却压缩了产品开发与测试的周期...

    Ken Fang 方俊贤
  • 微信团队分享:iOS版微信的高性能通用key-value组件技术实践

    本文要分享的是iOS版微信内部正在推广和使用的一个高性能通用key-value 组件的技术实践过程,该组件在微信内部被命名为MMKV(以下简称MMKV)。

    JackJiang
  • springboot-配置文件的注入

    使用@ConfigurationProperties注解批量注入配置文件中的多个值

    DataScience
  • Python -- list 类

    py3study
  • Scala面向对象编程之类和对象

    调用方法也可以不加括号,如果定义方法时不带括号,则调用方法时也不能带括号 (2)getter与setter 定义不带private的var field,此时...

    魏晓蕾

扫码关注云+社区

领取腾讯云代金券