精华内容
下载资源
问答
  • python 代码运行时间获取方式

    千次阅读 多人点赞 2020-09-15 02:01:08
    我们知道为了提高代码的运行速度,我们需要对书写的python代码进行性能测试,而代码性能的高低的直接反馈是电脑运行代码所需要的时间。这里将介绍三种常用的测试代码运行速度的方法。 第一种:使用time模块对代码的...

    我们知道为了提高代码的运行速度,我们需要对书写的python代码进行性能测试,而代码性能的高低的直接反馈是电脑运行代码所需要的时间。这里将介绍四种常用的测试代码运行速度的方法。
    第一种:使用time模块对代码的运行时间进行统计,代码如下:

    import time
    
    
    class Debug:
        def mainProgram(self):
            start_time = time.time()
            for i in range(100):
                print(i)
            end_time = time.time()
            print(f"the running time is: {end_time - start_time} s")
            
    
    if __name__ == "__main__":
        main = Debug()
        main.mainProgram()
    

    我们采用time 模块给所要测试的代码的前后加上时间戳,一个记为start_time,一个记作end_time,最后代码块的运行时间为end_time-start_time,单位为s(秒)。当然在python中还有许多的记录时间的模块,这里不做过多讨论,均类似于time模块,实现思路上一致,代码实现上大同小异。
    第二种:使用IPythonBuilt-in magic commands,%time,代码如下:

    class Debug:
        def mainProgram(self):
            %time for i in range(100): print(i)
            
    
    main = Debug()
    main.mainProgram()
    """
    Wall time: 1.99 ms
    """
    

    这个类定义是可以去掉的,并不会影响最终的结果,%time 后面加上想要计算时间的代码,然后编译器就会在运行后自动给出所测试代码的运行时间,但是经过测试,%time方法测出的时间并不准确,时间波动范围非常大,这个是很好理解的,因为计算机每时每刻都在处理一些进程,也就是说计算机的运行状态每时每刻都是不同的,所以在不同的时刻测试同一段代码的运行时间也会得到不同的结果。
    第三种:用IPython的另一个Built-in magic commands,%timeit,使用方法类似于%time,代码如下:

    class Debug:
        def mainProgram(self):
            %timeit for i in range(100): print(i)
            
    
    main = Debug()
    main.mainProgram()
    """
    8.53 ms ± 452 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
    """
    

    我们可以看到得到的结果是:每个循环8.53 ms±452 µs(平均±标准偏差,共运行7次,每个循环100个)%timeit相比于%time%timeit会多次执行测试代码,并且会取它们运行时间的平均值,并且还会计算出它们的标准差,因此这种计算方法计算的结果相对于使用%time执行测试代码一次是比较准确的。
    第四种:导入timeit模块来计算代码块的执行时间

    import timeit
    
    
    class Debug:
        def mainProgram(self):
            result = timeit.timeit(stmt="for i in range(100): print(i)", number=10)
            print(result)
    
    
    main = Debug()
    main.mainProgram()
    """
    0.05363089999991644 s
    """
    

    导入timeit模块后使用timeit.timeit()来测试想要测试的代码,并且代码以string的形式进行输入,并且需要设定number值,设定测试的该段代码需要执行的次数,最终我们得到0.05363089999991644,单位是s(秒),与内置魔法方法%timeit方法不同的是虽然也是多次计算,但是最终获取的时间是n次执行代码所需的总时间而不是执行一次的时间。
    至此,代码的运行速度测试方法的介绍暂时告一段落。

    当然,还有一种进阶操作可以用来测试脚本文件的性能,python 脚本性能分析(超链接点击跳转)。

    码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

    展开全文
  • 测量Python3代码运行时间的几种方法,并附带其他参考链接
  • python代码运行时间分析的几种方法

    千次阅读 2019-06-10 17:03:31
    python代码运行时间分析的几种方法 测试一次运行 普通方法 import time s_time = time.time() sqrt_list = [x**2 for x in range(1, 1000000, 3)] e_time = time.time() print("use {:.5}s".format(e_time-s_time)) ...

    python代码运行时间分析的几种方法

    测试一次运行

    普通方法

    import time
    s_time = time.time()
    sqrt_list = [x**2 for x in range(1, 1000000, 3)]
    e_time = time.time()
    print("use {:.5}s".format(e_time-s_time))
    
    
    use 0.1154s
    

    jupyter快捷方法

    %%time
    sqrt_list = [x**2 for x in range(1, 1000000, 3)]
    
    Wall time: 115 ms
    


    测试多次运行

    普通方法

    import timeit
    g = lambda x:x**2+1
    def calc(x):
        return g(x)**120
    
    # timeit.timeit("calc(2)", setup="from __main__ import calc", number=10000)
    timeit.timeit("calc(2)", globals={"calc":calc},number=10000)
    
    
    0.011658500000066851
    

    jupyter快捷方法

    %%timeit -n 10000
    g = lambda x:x**2+1
    
    def calc(x):
        return g(x)**120
    calc(2)
    
    
    1.27 µs ± 78.6 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
    


    函数调用运行时间分析

    普通方法

    def relu(x):
        return(0 if x<=0 else x)
    
    def relu_list():
        r_list = [relu(x) for x in range(-100000,100000,1)]
        return r_list
    
    import profile
    profile.run('relu_list()')    
    
             200006 function calls in 0.438 seconds
    
       Ordered by: standard name
    
       ncalls  tottime  percall  cumtime  percall filename:lineno(function)
            1    0.000    0.000    0.438    0.438 :0(exec)
            1    0.000    0.000    0.000    0.000 :0(setprofile)
       200000    0.234    0.000    0.234    0.000 <ipython-input-38-eb4400d5a683>:3(relu)
            1    0.000    0.000    0.438    0.438 <ipython-input-38-eb4400d5a683>:6(relu_list)
            1    0.203    0.203    0.438    0.438 <ipython-input-38-eb4400d5a683>:7(<listcomp>)
            1    0.000    0.000    0.438    0.438 <string>:1(<module>)
            0    0.000             0.000          profile:0(profiler)
            1    0.000    0.000    0.438    0.438 profile:0(relu_list())
    

    jupyter快捷方法

    %prun relu_list()
    
    200005 function calls in 0.057 seconds
    
       Ordered by: internal time
    
       ncalls  tottime  percall  cumtime  percall filename:lineno(function)
            1    0.039    0.039    0.055    0.055 <ipython-input-3-888d5920d99c>:5(<listcomp>)
       200000    0.016    0.000    0.016    0.000 <ipython-input-3-888d5920d99c>:1(relu)
            1    0.002    0.002    0.057    0.057 <string>:1(<module>)
            1    0.000    0.000    0.057    0.057 {built-in method builtins.exec}
            1    0.000    0.000    0.055    0.055 <ipython-input-3-888d5920d99c>:4(relu_list)
            1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
    


    逐行分析代码运行时间

    # 安装逐行分析模块模块
    !pip install line_profiler
    %load_ext line_profiler
    

    普通方法

    def relu(x):
        return(0 if x<=0 else x)
    
    def relu_list():
        r_list = [relu(x) for x in range(-100000,100000,1)]
        return r_list
    
    from line_profiler import LineProfiler
    lprofiler = LineProfiler(relu_list, relu)
    lprofiler.run('relu_list()')
    lprofiler.print_stats()
    
    Timer unit: 1e-07 s
    
    Total time: 0.0657075 s
    File: <ipython-input-48-b06a97605186>
    Function: relu at line 1
    
    Line #      Hits         Time  Per Hit   % Time  Line Contents
    ==============================================================
         1                                           def relu(x):
         2    200000     657075.0      3.3    100.0      return(0 if x<=0 else x)
    
    Total time: 0.228149 s
    File: <ipython-input-48-b06a97605186>
    Function: relu_list at line 4
    
    Line #      Hits         Time  Per Hit   % Time  Line Contents
    ==============================================================
         4                                           def relu_list():
         5         1    2281488.0 2281488.0    100.0      r_list = [relu(x) for x in range(-100000,100000,1)]
         6         1          6.0      6.0      0.0      return r_list
    

    jupyter快捷方法

    %lprun -f relu_list -f relu relu_list()
    
    Timer unit: 1e-07 s
    
    Total time: 0.0613854 s
    File: <ipython-input-6-b06a97605186>
    Function: relu at line 1
    
    Line #      Hits         Time  Per Hit   % Time  Line Contents
    ==============================================================
         1                                           def relu(x):
         2    200000     613854.0      3.1    100.0      return(0 if x<=0 else x)
    
    Total time: 0.212051 s
    File: <ipython-input-6-b06a97605186>
    Function: relu_list at line 4
    
    Line #      Hits         Time  Per Hit   % Time  Line Contents
    ==============================================================
         4                                           def relu_list():
         5         1    2120502.0 2120502.0    100.0      r_list = [relu(x) for x in range(-100000,100000,1)]
         6         1          7.0      7.0      0.0      return r_list
    

    参考 梁云1991 文章《24式加速你的python》
    https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzU3OTQzNTU2OA==&scene=124#wechat_redirect

    展开全文
  • Python获取代码运行时间的几种方法

    万次阅读 多人点赞 2018-03-23 23:23:25
    2、计算CPU的总运行时间 3、方法三 4、方法四 1、计算程序运行CPU的时间 #python 的标准库手册推荐在任何情况下尽量使用time.clock(). #只计算了程序运行CPU的时间,返回值是浮点数 import time start =time....

    目录

    1、计算程序运行CPU的时间

    2、计算CPU的总运行时间

    3、方法三

    4、方法四


    1、计算程序运行CPU的时间

    #python 的标准库手册推荐在任何情况下尽量使用time.clock().
    #只计算了程序运行CPU的时间,返回值是浮点数
    import time
    start =time.clock()
    #中间写上代码块
    end = time.clock()
    print('Running time: %s Seconds'%(end-start))

    #运行结果如下

    #Running time: 2.26660703157 Seconds

    2、计算CPU的总运行时间

    #该方法包含了其他程序使用CPU的时间,返回值是浮点数
    import time
    start=time.time()
    #中间写上代码块
    end=time.time()
    print('Running time: %s Seconds'%(end-start))

    #运行结果

    #Running time: 4.90400004387 Seconds

    3、方法三

    #该方法包含了其他程序使用CPU的时间
    import datetime
    start=datetime.datetime.now()
    #中间写代码块
    end=datetime.datetime.now()
    print('Running time: %s Seconds'%(end-start))

    #运行结果

    #Running time: 0:00:02.412000 Seconds

    4、方法四

    #在 Unix 系统中,建议使用 time.time(),在 Windows 系统中,建议使用 time.clock()
    #实现跨平台的精度性可以使用timeit.default_timer()
    import timeit
    start=timeit.default_timer()
    #中间写代码块
    end=timeit.default_timer()
    print('Running time: %s Seconds'%(end-start))

    #运行结果

    #Running time: 2.31757675399 Seconds

     

    注释:以上四种代码运行环境是Win7系统,都是在相同的代码块下运行的,可以对比代码运行时间获取windows系统下的最优方法;对于其他系统可以进行测试获取最优方法!

     

    交流学习资料共享欢迎入QQ群:955817470

     

     

     

     

     

     

     

     

     

     

    展开全文
  • python测量代码运行时间方法

    千次阅读 2018-01-10 09:09:19
    Python3.2具备一个叫做 timeit 的完美计时工具可以测量python代码运行时间。 timeit 模块 timeit 模块定义了接受两个参数的 Timer 类。两个参数都是字符串。 第一个参数是你要计时的语句或者函数。 传递...

    Python 社区有句俗语: “python自己带着电池” ,别自己写计时框架。 Python3.2具备一个叫做 timeit 的完美计时工具可以测量python代码的运行时间。

    timeit 模块

    • timeit 模块定义了接受两个参数的 Timer 类。两个参数都是字符串。 第一个参数是你要计时的语句或者函数。 传递给 Timer 的第二个参数是为第一个参数语句构建环境的导入语句。 从内部讲, timeit 构建起一个独立的虚拟环境, 手工地执行建立语句,然后手工地编译和执行被计时语句。
    • 一旦有了 Timer 对象,最简单的事就是调用 timeit(),它接受一个参数为每个测试中调用被计时语句的次数,默认为一百万次;返回所耗费的秒数。
    • Timer 对象的另一个主要方法是 repeat(), 它接受两个可选参数。 第一个参数是重复整个测试的次数,第二个参数是每个测试中调用被计时语句的次数。 两个参数都是可选的,它们的默认值分别是 3 和 1000000。 repeat() 方法返回以秒记录的每个测试循环的耗时列表。Python 有一个方便的 min 函数可以把输入的列表返回成最小值,如:
      min(t.repeat(3, 1000000))
    • 你可以在命令行使用 timeit 模块来测试一个已存在的 Python 程序,而不需要修改代码。
    • 具体可参见文档: http://docs.python.org/library/timeit.html

    1、程序代码

    def print_func_time(function):
        '''
        计算程序运行时间
        :param function:
        :return:
        '''
    
        @wraps(function)
        def func_time(*args, **kwargs):
            t0 = time.clock()
            result = function(*args, **kwargs)
            t1 = time.clock()
            print("Total running time: %s s" % (str(t1 - t0)))
            return result
    
        return func_time
    
    

    2、使用print_func_time

    @print_func_time
    def test():
        print(123)
    
    test()
    

    3、控制台输出程序运行时间

    123
    Total running time: 2.233830763170168e-05 s
    

    关注我的技术公众号《漫谈人工智能》,每天推送优质文章

    展开全文
  • 这两个模块在功能上都可以实现对代码运行时间的计算,但是本文推荐使用的是timeit模块,因为其是专门用来测试代码运行时间的,有一些灵活的方法,并且相对精度也会更高。下面我们分别来看下两个模块的主要方法和用法...
  • python测试代码运行时间时间

    千次阅读 2018-10-17 18:32:05
    import time start_time==time.time() #开始时间 end_time==time.time() #结束时间 print("time:%d" % (end_time-start_time)) #结束时间-开始时间 i
  • Python中计算代码运行时间

    千次阅读 2020-01-10 21:24:42
    Python中计算代码运行时间 import time start = time.time() ##代码段 end = time.time() print("Execution Time: ", end - start)
  • python获取代码运行时间

    千次阅读 2017-05-26 11:47:53
    有的时候,操作大文件,或者取数,要很久,我们给脚本首尾添加一段代码就知道,这段代码整体的大致运行时间了。import time start =time.clock()#中间写上代码块end = time.clock() print('Running time: %s Seconds...
  • 查看python代码运行时间

    千次阅读 2018-10-29 09:51:17
    要查看python运行时间,可以调用time函数来实现  用法代码如下: import time start = time() """ ###要查看的代码部分### """ end = time() print("Running time: ...
  • Python获取代码运行时间的四种方法

    万次阅读 多人点赞 2019-01-21 20:19:46
    注:程序执行时间 = cpu时间 + io时间 + 休眠或者等待...只计算了程序运行CPU的时间,返回值是浮点数 import time start =time.clock() #中间写上代码块 end = time.clock() print('Running time: %s Seconds'%(end...
  • python测量代码运行时间方法~

    千次阅读 2017-01-11 22:56:20
    好久没repost&&write了,废了好久,好久。。。。。 --------------------------...Python 社区有句俗语: “python自己带着电池” ,别自己写计时框架。 Python 2.3 具备一个叫做 timeit 的完美计时工具可以测量
  • 计算运行时间1、计算CPU的总运行时间2.windows和Unix可用3.方法3 1、计算CPU的总运行时间 #time.clock()在python3.8中被移除 #该方法包含了其他程序使用CPU的时间,返回值是浮点数 import time start=time.time() #...
  • 对于Python很多人还是比较了解的,虽然说Python有很多优势但同样具有劣势,Python最大的劣势就是运行效率慢,那么如何提高Python代码运行速度呢?这五种方法很管用。1、PyPy:在选择CPython的简易替代语言时,pypy...
  • 4行Python代码监测每行程序的运行时间和空间消耗

    千次阅读 多人点赞 2020-04-19 11:20:19
    Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,其具有高可扩展性和高可移植性,具有广泛的标准库,受到开发者的追捧...所以这更加需要开发者在使用Python语言开发项目时协调好程序运行的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 335,394
精华内容 134,157
关键字:

python代码运行时间太长

python 订阅