所以在Java语言中,我们可以做How to measure time taken by a function to execute
但是在python中是如何做到的呢?测量代码行之间的时间开始和结束时间?这样做的东西:
import some_time_library
starttime = some_time_library.some_module()
code_tobe_measured()
endtime = some_time_library.some_module()
time_taken = endtime - starttime发布于 2013-01-22 13:34:22
如果您想测量CPU时间,可以使用Python3.3及以上版本的time.process_time():
import time
start = time.process_time()
# your code here
print(time.process_time() - start)第一个调用会打开计时器,第二个调用会告诉你已经过了多少秒。
还有一个函数time.clock(),但它是deprecated since Python 3.3,将在Python3.8中删除。
有更好的性能分析工具,如timeit和profile,但是time.process_time()将测量CPU时间,这就是您所询问的。
如果您想测量挂钟时间,请使用time.time()。
发布于 2019-01-16 17:06:19
您也可以使用time库:
import time
start = time.time()
# your code
# end
print(f'Time: {time.time() - start}')发布于 2018-10-11 06:49:12
在一个小的方便类的帮助下,您可以像这样测量在缩进行中花费的时间:
with CodeTimer():
line_to_measure()
another_line()
# etc...这将在缩进行完成执行后显示以下内容:
Code block took: x.xxx ms更新:你现在可以先用pip install linetimer获取类,然后再用from linetimer import CodeTimer获取。参见this GitHub project。
上面类的代码:
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')然后,您可以将要测量的代码块命名为:
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它们:
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。
https://stackoverflow.com/questions/14452145
复制相似问题