编程教育资源分享平台

网站首页 > 后端开发 正文

计算 Python 脚本的执行时间的多种方法

luoriw 2024-02-01 14:23:56 后端开发 11 ℃ 0 评论

Python 脚本是用于执行特定任务的代码文件。每个 Python 脚本都需要一些时间来执行文件,可以使用以下方法进行计算。

使用time模块

在 Python 中,可以使用 time 模块,测量代码块执行所花费的时间。time 模块的 time() 函数以秒为单位返回时间,计算开始时间和结束时间的差值,得到给定代码块的执行时间。

import time
start_time = time.time()
for i in range(1000):
    print(i)
end_time = time.time()
execution_time = end_time - start_time
print("运行时长:",execution_time)

使用 timeit 模块

timeit 模块,通过多次运行代码并找到所用时间的平均值,提供了更准确的方法来测量代码片段的执行时间。

import timeit
for i in range(1000):
    print(i)
execution_time = timeit.timeit(number = 50)
print("运行时长:",execution_time)

使用 datetime 模块

使用 Python 中的 datetime 模块的 datetime.now() 函数记录开始和结束的时间戳,并计算差值来获取代码执行时间。

from datetime import datetime
start_time = datetime.now()
for i in range(1000):
    print(i)
end_time = datetime.now()
execution_time = (end_time - start_time).total_seconds() 
print("运行时长:", execution_time)

使用 cProfile 模块

cProfile 模块中的 run() 函数,计算每个函数执行所花费的时间以及整个 python 脚本执行时间。

import cProfile
def test():
    for i in range(1000):
        print(i)
cProfile.run("test()")

输出:

77004 function calls in 5.191 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.001    0.001    5.191    5.191 7.py:2(test)
        1    0.000    0.000    5.191    5.191 <string>:1(<module>)
     2000    0.010    0.000    5.167    0.003 backend.py:159(_send_output)
     2000    0.001    0.000    0.001    0.000 backend.py:167(_transform_output)
     2000    0.007    0.000    0.011    0.000 common.py:189(__init__)
     2000    0.005    0.000    0.016    0.000 common.py:205(__init__)
     2000    0.002    0.000    0.043    0.000 common.py:217(serialize_message)
     2000    0.002    0.000    0.003    0.000 common.py:58(__init__)
     2000    0.006    0.000    0.037    0.000 common.py:85(__repr__)
    10000    0.010    0.000    0.022    0.000 common.py:87(<genexpr>)
     2000    0.002    0.000    0.003    0.000 cpython_backend.py:1098(__getattr__)
     2000    0.013    0.000    5.186    0.003 cpython_backend.py:1109(write)
     2000    0.015    0.000    5.140    0.003 cpython_backend.py:909(send_message)
     2000    0.002    0.000    0.002    0.000 cpython_backend.py:953(_enter_io_function)
     2000    0.002    0.000    0.002    0.000 cpython_backend.py:956(_exit_io_function)
     2000    0.003    0.000    0.040    0.000 {built-in method builtins.ascii}
        1    0.000    0.000    5.191    5.191 {built-in method builtins.exec}
     2000    0.001    0.000    0.001    0.000 {built-in method builtins.getattr}
     2000    0.001    0.000    0.001    0.000 {built-in method builtins.hasattr}
     4000    0.002    0.000    0.002    0.000 {built-in method builtins.isinstance}
     2000    0.001    0.000    0.001    0.000 {built-in method builtins.len}
     1000    0.004    0.000    5.190    0.005 {built-in method builtins.print}
     8000    0.004    0.000    0.004    0.000 {built-in method builtins.repr}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
     4000    0.003    0.000    0.003    0.000 {method 'flush' of '_io.TextIOWrapper' objects}
    10000    0.010    0.000    0.010    0.000 {method 'format' of 'str' objects}
     2000    0.006    0.000    0.028    0.000 {method 'join' of 'str' objects}
     2000    0.001    0.000    0.001    0.000 {method 'keys' of 'dict' objects}
     2000    0.001    0.000    0.001    0.000 {method 'update' of 'dict' objects}
     2000    5.075    0.003    5.075    0.003 {method 'write' of '_io.TextIOWrapper' objects}

?

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!

?

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表
最新留言