我在一个项目中用python做业务逻辑部分的代码,但速度不够理想,记录业务逻辑各段代码的用时情况并分析瓶颈就成了必须的工作。于是动手写了下面的ElapsedTime.PY,帮助解决问题。
   
import sys
import time

class ElapsedTime:
    
def __init__(self, scope = ""):
        self.scope_name 
= scope
        self.start_time 
= time.clock()
        
    
def reset(self, scope = ""):
    self.scope_name 
= scope
        self.start_time 
= time.clock()
    
    
def elapsed(self, threadID = 0, fn = ""):  #线程ID暂末处理,只是占个位
        result 
= time.clock() - self.start_time
        self.log((
"%11.3f | %7d | %s"% (result, threadID, self.scope_name), fn)
    
    
def log(self, content, fn = ""):
        oldStdout 
= sys.stdout
        sys.stdout 
= open(fn, "a")
        
print content
        sys.stdout 
= oldStdout 
    

    使用方式如下:

import time
import ElapsedTime

= ElapsedTime.ElapsedTime('sleep')

et 
= ElapsedTime.ElapsedTime('sleep(3)')
time.sleep(
3)
et.elapsed(0, 
'log.txt')

et.reset(
'sleep(2)')
time.sleep(
2)
et.elapsed(0, 
'log.txt')

m.elapsed(0, 
'log.txt')

    查看执行后生成的log.txt文件中的内容:

      2.996 |       0 | sleep(3)
      2.000 |       0 | sleep(2)
      5.002 |       0 | sleep