Function: counter
    Summary: Decorator to count the number of a function is executed each time
    Examples: You can use that to had a progress of heally heavy
              computation without progress feedback
    Attributes:
        @param (function): function
    Returns: wrapped function

def counter(function):
    """
    Function: counter
    Summary: Decorator to count the number of a function is executed each time
    Examples: You can use that to had a progress of heally heavy
              computation without progress feedback
    Attributes:
        @param (function): function
    Returns: wrapped function
    """

    @wraps(function)
    def _wrapper(*args, **kwargs):
        _wrapper.count += 1
        res = function(*args, **kwargs)
        funcname = function.__name__
        count = _wrapper.count
        print("{} has been used: {}x".format(funcname, count))
        return res
    _wrapper.count = 0
    return _wrapper