Python计算代码运行时间的四种方法

作者:

文章目录
  • #python 的标准库手册推荐在任何情况下尽量使用time.clock(). #只计算了程序运行CPU的时间,返回值是浮点数 import time start =time.clock() #中间写上代码块 end = time.clock() print(‘Running time: %s Seconds’%(end-start)) 运行结果如下 Running time: 2.26660703157 Seconds
  • #该方法包含了其他程序使用CPU的时间,返回值是浮点数 import time start=time.time() #中间写上代码块 end=time.time() print(‘Running time: %s Seconds’%(end-start)) 运行结果 Running time: 4.90400004387 Seconds
  • #该方法包含了其他程序使用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
  • #在 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系统下的最优方法;对于其他系统可以进行测试获取最优方法!
  • 在Python中,你可以使用内置的time模块来测试代码的运行时间。下面是一个例子: import time start_time = time.time() # 获取当前时间 # 在这里放置你想要测试的代码 for i in range(0, 1000000): pass end_time = time.time() # 代码运行后再次获取当前时间 execution_time = end_time – start_time # 计算运行时间 print(f”代码运行时间: {execution_time}秒”) 这个代码会首先记录开始时间,然后运行一段代码(在这个例子中是一个简单的for循环),然后再记录结束时间。运行时间就是结束时间减去开始时间。 另外,如果你想要更精确的时间测量,你可以使用timeit模块,它提供了一个简单的方法来计时小段Python代码。它有命令行接口和Python库接口。这是一个例子: import timeit start_time = timeit.default_timer() # 在这里放置你想要测试的代码 for i in range(0, 1000000): pass end_time = timeit.default_timer() print(f”代码运行时间: {end_time – start_time}秒”) timeit.default_timer()`在不同的平台上会使用最精确的计时器。 示例 编写一个Python脚本来计算每个函数运行10000次的时间。 下面是一个示例代码: import timeit # 定义你的函数 def function1(): # 函数1的代码 pass def function2(): # 函数2的代码 pass def function3(): # 函数3的代码 pass # 使用timeit来测量每个函数的执行时间 print(“Measuring execution time for function1:”) start_time = timeit.default_timer() for _ in range(10000): function1() end_time = timeit.default_timer() print(f”Time taken by function1: {end_time – start_time} seconds”) print(“Measuring execution time for function2:”) start_time = timeit.default_timer() for _ in range(10000): function2() end_time = timeit.default_timer() print(f”Time taken by function2: {end_time – start_time} seconds”) print(“Measuring execution time for function3:”) start_time = timeit.default_timer() for _ in range(10000): function3() end_time = timeit.default_timer() print(f”Time taken by function3: {end_time – start_time} seconds”) 然而,这种方法不是timeit模块的最佳实践,因为它包含了循环的开销。更好的方法是使用timeit.repeat(),这样timeit模块会为你处理循环,并且可以提供更准确的计时,排除其他不必要的开销。 下面是使用timeit.repeat()的改进版本: import timeit # 定义你的函数 def function1(): # 函数1的代码 pass def function2(): # 函数2的代码 pass def function3(): # 函数3的代码 pass # 设置timeit参数 setup_code = “”” from __main__ import function1, function2, function3 “”” stmt1 = “function1()” stmt2 = “function2()” stmt3 = “function3()” number_of_runs = 10000 repeats = 3 # 重复测量次数以获得更稳定的结果 # 使用timeit.repeat来测量每个函数的执行时间 print(“Measuring execution time for function1:”) times1 = timeit.repeat(stmt=stmt1, setup=setup_code, repeat=repeats, number=number_of_runs) print(f”Average time taken by function1: {min(times1)} seconds”) print(“Measuring execution time for function2:”) times2 = timeit.repeat(stmt=stmt2, setup=setup_code, repeat=repeats, number=number_of_runs) print(f”Average time taken by function2: {min(times2)} seconds”) print(“Measuring execution time for function3:”) times3 = timeit.repeat(stmt=stmt3, setup=setup_code, repeat=repeats, number=number_of_runs) print(f”Average time taken by function3: {min(times3)} seconds”) 在这个例子中,setup_code导入了必要的函数,stmt1、stmt2和stmt3是要执行的语句(即函数调用),number_of_runs指定了每个函数要运行的次数,而repeats指定了每个测量要重复的次数。最后,我们取多次测量的最小值作为最接近真实执行时间的估计。 解释timeit模块中setup参数 setup参数接收一个字符串,该字符串包含在执行要计时的语句之前需要运行的代码。告诉timeit如何设置环境以便能够运行这段代码。这通常包括导入必要的模块或定义要使用的函数和变量。 上述代码片段中: setup_code = “”” from __main__ import function1, function2, function3 “”” setup_code是一个多行字符串,它告诉timeit模块从__main__模块中导入function1、function2和function3这三个函数。这里的__main__模块是指当前正在运行的Python脚本,也就是包含这些函数定义的脚本。 timeit模块将在一个单独的命名空间中执行setup代码,以确保测量的是纯粹的函数执行时间,而不受其他全局变量的影响。通过在setup中导入函数,你确保了timeit能够访问并正确调用这些函数。 简而言之,from __main__ import function1, function2, function3这行代码的目的是让timeit知道它需要测量的函数在哪里,并确保这些函数在测量过程中是可用的。 到此这篇关于Python计算代码运行时间的四种方法的文章就介绍到这了,更多相关Python计算代码运行时间内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 使用Python统计代码运行时间的两种方法 python中的代码运行时间获取方式 python 代码运行时间获取方式详解 利用4行Python代码监测每一行程序的运行时间和空间消耗 如何基于python测量代码运行时间 python获取代码运行时间的实例代码
  • 目录
    • 1、计算程序运行CPU的时间
    • 2、计算CPU的总运行时间
    • 3、方法三
    • 4、方法四
    • 5、方法补充

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

    运行结果如下

    Running time: 2.26660703157 Seconds

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

    运行结果

    Running time: 4.90400004387 Seconds

    #该方法包含了其他程序使用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

    #在 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系统下的最优方法;对于其他系统可以进行测试获取最优方法!

    在Python中,你可以使用内置的time模块来测试代码的运行时间。下面是一个例子:

    import time
    
    start_time = time.time()  # 获取当前时间
    
    # 在这里放置你想要测试的代码
    for i in range(0, 1000000):
        pass
    
    end_time = time.time()  # 代码运行后再次获取当前时间
    
    execution_time = end_time - start_time  # 计算运行时间
    
    print(f"代码运行时间: {execution_time}秒")
    

    这个代码会首先记录开始时间,然后运行一段代码(在这个例子中是一个简单的for循环),然后再记录结束时间。运行时间就是结束时间减去开始时间。

    另外,如果你想要更精确的时间测量,你可以使用timeit模块,它提供了一个简单的方法来计时小段Python代码。它有命令行接口和Python库接口。这是一个例子:

    import timeit
    
    start_time = timeit.default_timer()
    
    # 在这里放置你想要测试的代码
    for i in range(0, 1000000):
        pass
    
    end_time = timeit.default_timer()
    
    print(f"代码运行时间: {end_time - start_time}秒")
    

    timeit.default_timer()`在不同的平台上会使用最精确的计时器。

    示例

    编写一个Python脚本来计算每个函数运行10000次的时间。

    下面是一个示例代码:

    import timeit
    
    # 定义你的函数
    def function1():
        # 函数1的代码
        pass
    
    def function2():
        # 函数2的代码
        pass
    
    def function3():
        # 函数3的代码
        pass
    
    # 使用timeit来测量每个函数的执行时间
    print("Measuring execution time for function1:")
    start_time = timeit.default_timer()
    for _ in range(10000):
        function1()
    end_time = timeit.default_timer()
    print(f"Time taken by function1: {end_time - start_time} seconds")
    
    print("Measuring execution time for function2:")
    start_time = timeit.default_timer()
    for _ in range(10000):
        function2()
    end_time = timeit.default_timer()
    print(f"Time taken by function2: {end_time - start_time} seconds")
    
    print("Measuring execution time for function3:")
    start_time = timeit.default_timer()
    for _ in range(10000):
        function3()
    end_time = timeit.default_timer()
    print(f"Time taken by function3: {end_time - start_time} seconds")
    

    然而,这种方法不是timeit模块的最佳实践,因为它包含了循环的开销。更好的方法是使用timeit.repeat(),这样timeit模块会为你处理循环,并且可以提供更准确的计时,排除其他不必要的开销。

    下面是使用timeit.repeat()的改进版本:

    import timeit
    
    # 定义你的函数
    def function1():
        # 函数1的代码
        pass
    
    def function2():
        # 函数2的代码
        pass
    
    def function3():
        # 函数3的代码
        pass
    
    # 设置timeit参数
    setup_code = """
    from __main__ import function1, function2, function3
    """
    stmt1 = "function1()"
    stmt2 = "function2()"
    stmt3 = "function3()"
    number_of_runs = 10000
    repeats = 3  # 重复测量次数以获得更稳定的结果
    
    # 使用timeit.repeat来测量每个函数的执行时间
    print("Measuring execution time for function1:")
    times1 = timeit.repeat(stmt=stmt1, setup=setup_code, repeat=repeats, number=number_of_runs)
    print(f"Average time taken by function1: {min(times1)} seconds")
    
    print("Measuring execution time for function2:")
    times2 = timeit.repeat(stmt=stmt2, setup=setup_code, repeat=repeats, number=number_of_runs)
    print(f"Average time taken by function2: {min(times2)} seconds")
    
    print("Measuring execution time for function3:")
    times3 = timeit.repeat(stmt=stmt3, setup=setup_code, repeat=repeats, number=number_of_runs)
    print(f"Average time taken by function3: {min(times3)} seconds")
    

    在这个例子中,setup_code导入了必要的函数,stmt1stmt2stmt3是要执行的语句(即函数调用),number_of_runs指定了每个函数要运行的次数,而repeats指定了每个测量要重复的次数。最后,我们取多次测量的最小值作为最接近真实执行时间的估计。

    解释timeit模块中setup参数

    setup参数接收一个字符串,该字符串包含在执行要计时的语句之前需要运行的代码。告诉timeit如何设置环境以便能够运行这段代码。这通常包括导入必要的模块或定义要使用的函数和变量。

    上述代码片段中:

    setup_code = """
    from __main__ import function1, function2, function3
    """
    

    setup_code是一个多行字符串,它告诉timeit模块从__main__模块中导入function1function2function3这三个函数。这里的__main__模块是指当前正在运行的Python脚本,也就是包含这些函数定义的脚本。

    timeit模块将在一个单独的命名空间中执行setup代码,以确保测量的是纯粹的函数执行时间,而不受其他全局变量的影响。通过在setup中导入函数,你确保了timeit能够访问并正确调用这些函数。

    简而言之,from __main__ import function1, function2, function3这行代码的目的是让timeit知道它需要测量的函数在哪里,并确保这些函数在测量过程中是可用的。

    到此这篇关于Python计算代码运行时间的四种方法的文章就介绍到这了,更多相关Python计算代码运行时间内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • 使用Python统计代码运行时间的两种方法
    • python中的代码运行时间获取方式
    • python 代码运行时间获取方式详解
    • 利用4行Python代码监测每一行程序的运行时间和空间消耗
    • 如何基于python测量代码运行时间
    • python获取代码运行时间的实例代码

    站内搜索