Встречается на собеседованиях • сегодня

Зачем нужен системный вызов 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`.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы