Implement a class, RateLimiter, which wraps a given function, allowing it to be called no more than once every n milliseconds.
TODO: Implement this class.
class RateLimiter:
"""Rate limiter class which will only allow the wrapped function to be called with specified frequency."""
def __init__(self, fn, millis_between_calls):
self.fn = fn
self.millis_between_calls = millis_between_calls
def run_rate_limited(self):
# TODO: Implement this.
pass
Sample Usage:
rate_limited = RateLimiter(tracked_function, 1000)
rate_limited.run_rate_limited()
这道题要求实现一个限流器 RateLimiter,用来包装任意函数,并保证它在两次调用之间至少间隔指定的毫秒数。核心思路是记录上一次真正执行函数的时间戳,每次调用时先比较当前时间与上次执行时间的差值:如果已经超过阈值,就立即调用被包装函数并更新记录;否则需要等待剩余时间后再执行。常见实现会结合时间戳和 sleep 控制节流,考察的是对时间管理、类封装以及函数包装的理解。
正文完