Встречается на собеседованиях • сегодня
Зачем нужен системный вызов SELECT
Системный вызов select (в Python реализован в модуле select) используется для мониторинга нескольких файловых дескрипторов (сокетов, файлов, pipes) на предмет их готовности к чтению, записи или наличию ошибок. Это особенно полезно в асинхронных приложениях, где нужно эффективно управлять множеством соединений без блокировки.
Пример использования:
python
import select
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 12345))
server.listen(5)
inputs = [server]
while True:
readable, _, _ = select.select(inputs, [], [])
for s in readable:
if s is server:
client, addr = s.accept()
inputs.append(client)
else:
data = s.recv(1024)
if not data:
inputs.remove(s)
s.close()
text
**Плюсы:**
- Эффективность: не требует активного опроса (polling), снижая нагрузку на CPU.
- Поддержка множества дескрипторов в одном потоке.
**Минусы:**
- Ограничение на количество дескрипторов (обычно 1024).
- Менее удобен по сравнению с современными асинхронными библиотеками (asyncio, trio).
Альтернативы: `poll`, `epoll` (Linux), `kqueue` (BSD), `asyncio`.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы