Встречается на собеседованиях • сегодня
Как ограничить число потоков или задач для доступа к ресурсу в определенное время
Для ограничения числа потоков/задач, работающих с ресурсом одновременно, можно использовать threading.Semaphore или asyncio.Semaphore в зависимости от типа кода (синхронный/асинхронный).
Пример с threading.Semaphore:
python
import threading
semaphore = threading.Semaphore(3) # Макс 3 потока одновременно
def access_resource():
with semaphore:
print(f"Работает поток {threading.current_thread().name}")
# Код работы с ресурсом
text
**Пример с asyncio.Semaphore:**
```python
import asyncio
semaphore = asyncio.Semaphore(3) # Макс 3 задачи одновременно
async def access_resource():
async with semaphore:
print("Задача получила доступ")
# Асинхронная работа с ресурсомПринцип работы:
- Семафор создается с указанием максимального числа "разрешений".
- При входе в контекст (
with/async with) поток/задача захватывает разрешение. - Если разрешений нет — поток/задача блокируется до освобождения.
Это гарантирует, что не больше N потоков/задач смогут работать с ресурсом одновременно.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы