Fundamentals 3 min read

How to Build a Parameterized Python Decorator that Monitors Execution Time

This article explains how to create a parameterized Python decorator that can be applied to any function, measures its execution duration using the time module, and prints the function name along with whether it ran within a specified number of seconds, complete with full code examples.

MaGe Linux Operations
MaGe Linux Operations
MaGe Linux Operations
How to Build a Parameterized Python Decorator that Monitors Execution Time

During a job interview, a Python learner was asked to design a decorator that accepts an integer parameter representing a maximum allowed execution time, can be applied to any function, and prints the function name and actual duration when the execution exceeds the limit.

The solution uses a higher‑order function (or a callable class) together with the time module to record the start time, invoke the original function, compute the elapsed time, and compare it with the supplied threshold.

from functools import wraps
import time

class TakeTime:
    def __init__(self, para: int):
        self.para = para
    def __call__(self, func):
        @wraps(func)
        def wrapped(*args, **kwargs):
            start_time = time.time()
            name = func.__name__
            func(*args, **kwargs)
            count_time = time.time() - start_time
            if self.para >= count_time:
                print("the {name} take {time}, less time".format(name=name, time=count_time))
            else:
                print("the {name} take {time}, more time".format(name=name, time=count_time))
            return func
        return wrapped

def func_time(para: int):
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            start_time = time.time()
            name = func.__name__
            func(*args, **kwargs)
            count_time = time.time() - start_time
            if para >= count_time:
                print("the {name} take {time}, less time".format(name=name, time=count_time))
            else:
                print("the {name} take {time}, more time".format(name=name, time=count_time))
            return func
        return wrapper
    return decorator

@TakeTime(10)
def log():
    for x in range(10):
        time.sleep(0.5)

@func_time(10)
def log1():
    for x in range(10):
        time.sleep(0.5)

Running the example produces output such as:

the log take 5.030340194702148, less time
<function log at 0x...>
Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

PythonCode ExampleDecoratorexecution time
MaGe Linux Operations
Written by

MaGe Linux Operations

Founded in 2009, MaGe Education is a top Chinese high‑end IT training brand. Its graduates earn 12K+ RMB salaries, and the school has trained tens of thousands of students. It offers high‑pay courses in Linux cloud operations, Python full‑stack, automation, data analysis, AI, and Go high‑concurrency architecture. Thanks to quality courses and a solid reputation, it has talent partnerships with numerous internet firms.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.