您的位置:首页 > 其它

如何使用timeit模块

2020-04-01 18:35 92 查看

文章目录

  • 示例
  • 实战
  • 功能介绍

    timeit模块可以用来测试小段代码的运行时间
    官方使用说明

    Tool for measuring execution time of small code snippets.

    源码

    def timeit(stmt="pass", setup="pass", timer=default_timer,
    number=default_number, globals=None):
    """Convenience function to create Timer object and call timeit method."""
    return Timer(stmt, setup, timer, globals).timeit(number)
    
    def repeat(stmt="pass", setup="pass", timer=default_timer,
    repeat=default_repeat, number=default_number, globals=None):
    """Convenience function to create Timer object and call repeat method."""
    return Timer(stmt, setup, timer, globals).repeat(repeat, number)

    官方参数说明

    default_number = 1000000
    default_repeat = 5
    default_timer = time.perf_counter
    _globals = globals

    参数说明

    stmt:用于传入要测试时间的代码,可以直接接受字符串的表达式,也可以接受单个变量,也可以接受函数。传入函数时要把函数申明在当前文件中,然后在 stmt = ‘func()’ 执行函数,然后使用 setup = ‘from __main__ import func’
    
    setup:传入stmt的运行环境,比如stmt中使用到的参数、变量,要导入的模块等。可以写一行语句,也可以写多行语句,写多行语句时要用分号;隔开语句。
    
    number:需要测试代码的运行次数,默认100w次。
    
    repeat:指测试要重复几次,每次的结果构成列表返回,默认5次。

    示例

    demo01

    分别以timeit,repeat为例说明:

    import timeit
    
    print(timeit.timeit(stmt= 'list(i**2 for i in normal_list)',setup = 'normal_list=range(10000)',number=10))
    #0.3437936799875755
    print(timeit.repeat(stmt= 'list(i**2 for i in normal_list)', setup='normal_list=range(10000)',repeat=2,number=10))
    #[0.33649995761778984, 0.3394490767789293]

    需要测试的语句:list(i**2 for i in normal_list)
    setup设置变量:normal_list=range(10000)
    number=10:执行10次得到的时间
    repeat=2:每轮执行10次,执行两轮,返回结果为列表。列表元素为两轮的结果。

    demo2

    #setup 为复合语句
    print(timeit.timeit(stmt= 'list(i**2 for i in normal_list)',setup = 'a=10000;normal_list=range(a)',number=10))
    #0.33272367424748817
    print(timeit.repeat(stmt= 'list(i**2 for i in normal_list)', setup='a=10000;normal_list=range(a)',repeat=2,number=10))
    #[0.3323106610316342, 0.3356380911962764]

    复合语句使用

    ;
    隔开

    demo3

    def func():
    normal_list=range(10000)
    L = [i**2 for i in normal_list]
    
    #stmt为函数
    print(timeit.timeit("func()", setup="from __main__ import func",number=10))
    #0.12436874684622312
    print(timeit.repeat("func()", setup="from __main__ import func",repeat=2,number=10))
    #[0.12142133435126468, 0.12079555675148601]

    from main import func:从当前模块导入此函数

    实战

    使用timeit测试算法执行时间

    戳我看实例

    此博文引用:https://www.cnblogs.com/zhaoshizi/p/9221574.html

    • 点赞
    • 收藏
    • 分享
    • 文章举报
    傻子丶疯子 发布了10 篇原创文章 · 获赞 0 · 访问量 528 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: