如何在Python中确定处理时间?
我刚开始学习Python,对日期和时间的文档有点困惑。我想计算执行某个计算所花费的时间。
在Java中,我会这样写:
long timeBefore = System.currentTimeMillis();
doStuff();
long timeAfter = System.currentTimeMillis();
elapsed time = timeAfter - timeBefore;
我相信在Python中会更简单。有人能帮我吗?
9 个回答
16
你可以实现两个函数,分别叫做 tic()
和 tac()
。其中,tic()
用来记录你调用它的时间,而 tac()
则用来打印从 tic()
被调用到现在的时间差。下面是一个简单的实现:
import time
_start_time = time.time()
def tic():
global _start_time
_start_time = time.time()
def tac():
t_sec = round(time.time() - _start_time)
(t_min, t_sec) = divmod(t_sec,60)
(t_hour,t_min) = divmod(t_min,60)
print('Time passed: {}hour:{}min:{}sec'.format(t_hour,t_min,t_sec))
在你的代码中,你可以这样使用它:
tic()
do_some_stuff()
tac()
这样做的话,它会输出类似下面的内容:
Time passed: 0hour:7min:26sec
你还可以看看:
- Python 的日期时间库: https://docs.python.org/2/library/datetime.html
- Python 的时间库: https://docs.python.org/2/library/time.html
40
在之前的一些回答基础上(感谢:SilentGhost、nosklo、Ramkumar),我们可以用一个简单的便携式计时器来实现,使用的是 timeit
里的 default_timer()
:
>>> import timeit
>>> tic=timeit.default_timer()
>>> # Do Stuff
>>> toc=timeit.default_timer()
>>> toc - tic #elapsed time in seconds
这个方法会返回经过的实际时间,而不是CPU的工作时间。正如在timeit
文档中所描述的,它会根据你的操作系统选择最精确的现实世界计时器。
另外,从Python 3.3开始,这个功能也可以通过time.perf_counter
性能计数器来实现。在3.3及以上版本中,timeit.default_timer()指的就是这个新的计数器。
如果你需要更精确或更复杂的性能计算,timeit
还提供了更高级的功能,可以自动计时小段代码,并计算在设定的重复次数下的平均运行时间。
96
在Python中,相应的写法是:
>>> import time
>>> tic = time.clock()
>>> toc = time.clock()
>>> toc - tic
如果你想找出表现最好的方法,建议你看看timeit
这个工具。