首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python中测量代码行之间所用的时间?

如何在python中测量代码行之间所用的时间?
EN

Stack Overflow用户
提问于 2013-01-22 13:31:41
回答 9查看 148.8K关注 0票数 127

所以在Java语言中,我们可以做How to measure time taken by a function to execute

但是在python中是如何做到的呢?测量代码行之间的时间开始和结束时间?这样做的东西:

代码语言:javascript
运行
复制
import some_time_library

starttime = some_time_library.some_module()
code_tobe_measured() 
endtime = some_time_library.some_module()

time_taken = endtime - starttime
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-01-22 13:34:22

如果您想测量CPU时间,可以使用Python3.3及以上版本的time.process_time()

代码语言:javascript
运行
复制
import time
start = time.process_time()
# your code here    
print(time.process_time() - start)

第一个调用会打开计时器,第二个调用会告诉你已经过了多少秒。

还有一个函数time.clock(),但它是deprecated since Python 3.3,将在Python3.8中删除。

有更好的性能分析工具,如timeitprofile,但是time.process_time()将测量CPU时间,这就是您所询问的。

如果您想测量挂钟时间,请使用time.time()

票数 196
EN

Stack Overflow用户

发布于 2019-01-16 17:06:19

您也可以使用time库:

代码语言:javascript
运行
复制
import time

start = time.time()

# your code

# end

print(f'Time: {time.time() - start}')
票数 70
EN

Stack Overflow用户

发布于 2018-10-11 06:49:12

在一个小的方便类的帮助下,您可以像这样测量在缩进行中花费的时间

代码语言:javascript
运行
复制
with CodeTimer():
   line_to_measure()
   another_line()
   # etc...

这将在缩进行完成执行后显示以下内容:

代码语言:javascript
运行
复制
Code block took: x.xxx ms

更新:你现在可以先用pip install linetimer获取类,然后再用from linetimer import CodeTimer获取。参见this GitHub project

上面类的代码:

代码语言:javascript
运行
复制
import timeit

class CodeTimer:
    def __init__(self, name=None):
        self.name = " '"  + name + "'" if name else ''

    def __enter__(self):
        self.start = timeit.default_timer()

    def __exit__(self, exc_type, exc_value, traceback):
        self.took = (timeit.default_timer() - self.start) * 1000.0
        print('Code block' + self.name + ' took: ' + str(self.took) + ' ms')

然后,您可以将要测量的代码块命名为:

代码语言:javascript
运行
复制
with CodeTimer('loop 1'):
   for i in range(100000):
      pass

with CodeTimer('loop 2'):
   for i in range(100000):
      pass

Code block 'loop 1' took: 4.991 ms
Code block 'loop 2' took: 3.666 ms

nest它们:

代码语言:javascript
运行
复制
with CodeTimer('Outer'):
   for i in range(100000):
      pass

   with CodeTimer('Inner'):
      for i in range(100000):
         pass

   for i in range(100000):
      pass

Code block 'Inner' took: 2.382 ms
Code block 'Outer' took: 10.466 ms

关于timeit.default_timer(),它使用基于操作系统和Python版本的最佳计时器,请参阅this answer

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14452145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档