二层三层通用装饰器


def timethis(func=None, log=logging.getLogger(), loglevel=logging.INFO):                                                                                
    '''                                                                                                                                                 
    计算程序运行时间的装饰器。                                                                                                                          
    '''                                                                                                                                                 
    if func is None:                                                                                                                                    
        return partial(timethis, log=log, loglevel=loglevel)                                                                                            
    log.addHandler(logging.StreamHandler())                                                                                                             
    log.setLevel(loglevel)                                                                                                                              
    @wraps(func)                                                                                                                                        
    def wrapper(*args, **kwargs):                                                                                                                       
        start_time = time.time()                                                                                                                        
        log.info(f'running {func.__name__}')                                                                                                            
        res = func(*args, **kwargs)                                                                                                                     
        end_time = time.time()                                                                                                                          
        log.info(f"Comparing embeddings costs {end_time - start_time:.6} seconds.")                                                                     
        return res                                                                                                                                      
    return wrapper

posted @ 2020-07-07 10:53  ColaIce  阅读(107)  评论(0)    收藏  举报