【问题标题】:Timing Execution Speed of Python Code [duplicate]Python代码的定时执行速度[重复]
【发布时间】:2023-04-10 16:58:02
【问题描述】:

可能重复:
Python: Time a code segment for testing performance (with timeit)

在 C++ 中,您可以相当轻松地为代码块计时,请参见下面的代码。有什么办法可以做到这一点蟒蛇? (轻松)谢谢!

time_t startTime = clock();

// Do stuff

time_t endTime = clock();

cout << "Difference in time(milliseconds) : " << endTime - startTime << endl;

【问题讨论】:

标签: python performance


【解决方案1】:

逐字翻译您的代码

import datetime
start = datetime.datetime.now()
// do stuff
finish = datetime.datetime.now()
print(finish-start)

【讨论】:

    【解决方案2】:

    尝试使用标准库中的profilers

    下面是一个示例,如何从命令行使用cProfile 分析脚本。 cProfile 是所有 Python 发行版中可用的分析器之一。

    $ python -m cProfile euler048.py
    
    1007 function calls in 0.061 CPU seconds
    
    Ordered by: standard name
    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.061    0.061 <string>:1(<module>)
     1000    0.051    0.000    0.051    0.000 euler048.py:2(<lambda>)
        1    0.005    0.005    0.061    0.061 euler048.py:2(<module>)
        1    0.000    0.000    0.061    0.061 {execfile}
        1    0.002    0.002    0.053    0.053 {map}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler objects}
        1    0.000    0.000    0.000    0.000 {range}
        1    0.003    0.003    0.003    0.003 {sum}
    

    【讨论】:

      【解决方案3】:

      您可能希望查看timeit module,它对于计时小sn-ps 代码非常方便。

      典型示例:

      from timeit import Timer
      
      def foo():
          # some code here
      
      t1 = Timer("""foo()""", """from __main__ import foo""")
      print t1.timeit(1000)  # runs foo() 1000 times and returns the time taken
      

      【讨论】:

        【解决方案4】:

        我会将您要计时的部分分解为一个函数,并在其周围放置一个计时装饰器,以对代码进行计时。

        这节省了代码重复,并增加了您可以存储/记录函数名称和参数以及计时统计信息的好处。

        【讨论】:

        • 如果你想要这种控制和统计,我强烈建议反对这样做。这就像再次发明轮子一样。改用探查器!这正是他们所做的,不会乱扔您的源代码See this answer
        • 我在某种程度上同意冰箱。有时,您希望代码在现实世界中存在/运行时记录和监控性能,探查器在这里不是一个好的解决方案。
        • 说得对,很好。
        猜你喜欢
        • 2017-03-15
        • 2016-10-28
        • 2019-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-10
        • 1970-01-01
        • 2022-06-25
        相关资源
        最近更新 更多