【问题标题】:How to measure CPU running time and wall clock running time of a function, separately, as Python code (not from terminal)?如何分别测量函数的 CPU 运行时间和挂钟运行时间,作为 Python 代码(不是来自终端)?
【发布时间】:2023-03-12 15:47:01
【问题描述】:

我正在寻找一种方法来衡量 Python 中的函数性能,将挂钟和 CPU 时间分开。

我研究了 python 分析器,但它们似乎旨在扫描程序而不是单独的函数。来自http://docs.python.org/2/library/profile.html

注意分析器模块旨在为给定程序提供执行配置文件,而不是用于基准测试目的(为此,有 timeit 以获得合理准确的结果)。这尤其适用于针对 C 代码对 Python 代码进行基准测试:分析器会为 Python 代码引入开销,但不会为 C 级函数引入开销,因此 C 代码似乎比任何 Python 代码都快。

然后我尝试了 timeit 模块:http://docs.python.org/2/library/timeit.html,但它似乎不支持 CPU 和挂钟时间的分离。据我了解,它只是测量总运行时间。

我正在寻找的是这样的:

$ time python yourprogram.py

real    0m1.028s
user    0m0.001s
sys     0m0.003s

但是我不需要从命令行调用它,而是需要从 python 代码中调用它。

类似于 R 中的 system.time():

print(system.time(replicate(repeats, factorialRecursive(150))))
 user  system elapsed 
0.041   0.001   0.041 

如何在 Python 中实现这一点?

【问题讨论】:

    标签: python performance


    【解决方案1】:

    The resource module 包含 getrusage,它应该允许您分别检索用户、系统和挂钟时间,就像 time 命令所做的那样。

    【讨论】:

    • 我不知道如何使用该模块来测量函数的运行时间。我在要测量的函数中尝试了 usage = resource.getrusage(resource.RUSAGE_SELF) ,然后调用了 ru_stime 和 ru_utime 字段,但是不同函数调用之间的时间相加。你知道怎么做吗?我在这里创建了新问题:stackoverflow.com/q/19204740/1690799
    猜你喜欢
    • 2013-07-04
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2012-04-23
    • 2012-06-19
    • 1970-01-01
    相关资源
    最近更新 更多