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细节封装起来,以后调用起来就会简化很多。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。