我有一个Python命令行程序,需要一段时间才能完成。我想知道完成跑步所需的确切时间。
我看过timeit模块,但它似乎只适用于小代码片段。我想给整个节目计时。
我有一个Python命令行程序,需要一段时间才能完成。我想知道完成跑步所需的确切时间。
我看过timeit模块,但它似乎只适用于小代码片段。我想给整个节目计时。
当前回答
这是获取程序运行时间的最简单方法:
在程序末尾编写以下代码。
import time
print(time.clock())
其他回答
对于函数,我建议使用我创建的这个简单的修饰符。
def timeit(method):
def timed(*args, **kwargs):
ts = time.time()
result = method(*args, **kwargs)
te = time.time()
if 'log_time' in kwargs:
name = kwargs.get('log_name', method.__name__.upper())
kwargs['log_time'][name] = int((te - ts) * 1000)
else:
print('%r %2.22f ms' % (method.__name__, (te - ts) * 1000))
return result
return timed
@timeit
def foo():
do_some_work()
# foo()
# 'foo' 0.000953 ms
要使用metakermit对Python 2.7的更新答案,您需要单调包。
代码如下:
from datetime import timedelta
from monotonic import monotonic
start_time = monotonic()
end_time = monotonic()
print(timedelta(seconds=end_time - start_time))
我在很多地方都遇到了同样的问题,所以我创建了一个方便的套装占星术。你可以用pip安装钟表,然后以优雅的方式安装:
from horology import Timing
with Timing(name='Important calculations: '):
prepare()
do_your_stuff()
finish_sth()
将输出:
Important calculations: 12.43 ms
或者更简单(如果你有一个功能):
from horology import timed
@timed
def main():
...
将输出:
main: 7.12 h
它负责单位和舍入。它适用于python 3.6或更高版本。
这是获取程序运行时间的最简单方法:
在程序末尾编写以下代码。
import time
print(time.clock())
以下代码段以可读的<HH:MM:SS>格式打印经过的时间。
import time
from datetime import timedelta
start_time = time.time()
#
# Perform lots of computations.
#
elapsed_time_secs = time.time() - start_time
msg = "Execution took: %s secs (Wall clock time)" % timedelta(seconds=round(elapsed_time_secs))
print(msg)