Как бы реализовал систему с ограничением обращений к ресурсу через 5 сессий
Python
Junior
Без компании
Как бы реализовал систему с ограничением обращений к ресурсу через 5 сессий
Ответы
Для ограничения обращений к ресурсу через 5 сессий можно использовать `threading.Semaphore`. Он позволяет контролировать количество одновременных доступов к ресурсу.
```
import threading
class ResourceLimiter:
def __init__(self, max_sessions=5):
self.semaphore = threading.Semaphore(max_sessions)
def access_resource(self):
with self.semaphore:
print(f"Resource accessed by {threading.current_thread().name}")
# Здесь происходит работа с ресурсом
# Пример использования
limiter = ResourceLimiter()
threads = []
for i in range(10):
t = threading.Thread(target=limiter.access_resource, name=f"Thread-{i}")
t.start()
threads.append(t)
for t in threads:
t.join()
```
**Как это работает:**
- `Semaphore(5)` разрешает не более 5 потоков одновременно.
- `with self.semaphore` блокирует доступ, если уже 5 активных сессий.
- Остальные потоки ждут освобождения слота.
Альтернатива — `asyncio.Semaphore` для асинхронного кода.