Check

Ограничение частоты вызова функции

Python Middle Яндекс 01.01.2025
Реализуйте декоратор `throttle(seconds: float)`, который не позволяет вызывать функцию чаще, чем 1 раз в `seconds` секунд. При слишком частых вызовах функция просто не должна выполняться (можно возвращать `None`).
Ответы
Решение 1
```python import time import functools from typing import Callable, Any def throttle(seconds: float) -> Callable[[Callable[..., Any]], Callable[..., Any | None]]: def decorator(func: Callable[..., Any]) -> Callable[..., Any | None]: last_called = 0.0 @functools.wraps(func) def wrapper(*args, **kwargs) -> Any | None: nonlocal last_called now = time.time() if now - last_called >= seconds: last_called = now return func(*args, **kwargs) return None return wrapper return decorator ```