python如何统计代码运行的时长
1.背景
有时候,需要统计一段代码运行所用的时长,则可以用到下面的代码。
2.代码示例
#!/usr/bin/envpython
importdatetime
importtime
start_time=datetime.datetime.now()
time.sleep(5)
end_time=datetime.datetime.now()
delta=end_time-start_time
delta_gmtime=time.gmtime(delta.total_seconds())
duration_str=time.strftime("%H:%M:%S",delta_gmtime)
print"starttime:",start_time
print"endtime:",end_time
print"delta_gmtime:",delta_gmtime
print"duration:",duration_str
运行效果:
flying-bird@flyingbird:~/examples/python/time_test$./time_test.py starttime:2015-06-0920:11:47.437286 endtime:2015-06-0920:11:52.440018 delta_gmtime:time.struct_time(tm_year=1970,tm_mon=1,tm_mday=1,tm_hour=0,tm_min=0,tm_sec=5,tm_wday=3,tm_yday=1,tm_isdst=0) duration:00:00:05 flying-bird@flyingbird:~/examples/python/time_test$
3.进一步优化
在上面的例子中,还是涉及到一些datetime细节。为此,可以进一步封装。如下:
importdatetime
importtime
classTimeDuration(object):
'Timeduration.'
def__init__(self):
pass
defstart(self):
self.start_time=datetime.datetime.now()
self.end_time=None
defstop(self):
ifself.start_timeisNone:
print"ERROR:start()mustbecalledbeforestop()."
return
self.end_time=datetime.datetime.now()
defgetDurationStr(self):
'Stringofdurationwiththeformat"%H:%M:%S".'
ifself.start_timeisNoneorself.end_timeisNone:
print"ERROR:start()andstop()mustbecalledfirst.";
return
delta=self.end_time-self.start_time
delta_gmtime=time.gmtime(delta.total_seconds())
returntime.strftime("%H:%M:%S",delta_gmtime)
调用示例:
flying-bird@flyingbird:~/examples/python/time_test$cattime_test2.py #!/usr/bin/envpython importtime importtime_utils duration=time_utils.TimeDuration() duration.start() time.sleep(5) duration.stop() printduration.getDurationStr() flying-bird@flyingbird:~/examples/python/time_test$./time_test2.py 00:00:05 flying-bird@flyingbird:~/examples/python/time_test$
4.小结
把一些不熟悉的python细节封装起来,以后调用起来就会简化很多。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。