wrapper_function

mail@pastecode.io avatar
unknown
python
a year ago
1.2 kB
1
Indexable
Never
import time

def wrapper_time(a_function:callable) ->callable:
    """A wrapper function that measures time it takes for function to complete. It accepts other functions as input."""
    
    def wrapped_function(*args, **kwargs):
        """A wrapper function content, designed to accept all possible arguments."""
        time_start = time.time()

        result = a_function(*args, **kwargs) #defines wrapper result -> a function accepting arguments. 
        
        time_end = time.time()
        print(f'Function {a_function.__name__} took {time_end - time_start} seconds to complete.')
        return result   #wrapped function returns same output as input function. 
    return wrapped_function #Wrapper returns function with time log.

def get_sequence(n): 
    """Example function to get wrapped. High arguments take long time to complete (hard stopped at n>23 to prevent excessive calculation time)."""
    if n <= 0:
        return 1
    elif n > 23:
        return 1
    else:
        v = 0
        for i in range(n):
            v += 1 + (get_sequence(i - 1) + get_sequence(i))/2            
        return v
    
wrapper_get_sequence = wrapper_time(get_sequence)

print(wrapper_get_sequence(22))