Встречается на собеседованиях • сегодня
Зачем нужен системный вызов EPOLL
epoll — это механизм в Linux для эффективного мониторинга множества файловых дескрипторов (например, сокетов). Он позволяет приложениям обрабатывать тысячи соединений с минимальными накладными расходами по сравнению с select или poll.
Преимущества:
- Масштабируемость: работает за O(1) при большом числе дескрипторов.
- Поддержка edge-triggered (ET) и level-triggered (LT) режимов.
- Не требует перебора всех дескрипторов при каждом вызове.
Пример:
python
import select
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('0.0.0.0', 8080))
server.listen(10)
epoll = select.epoll()
epoll.register(server.fileno(), select.EPOLLIN) # Регистрируем серверный сокет
while True:
events = epoll.poll(1) # Ждём события
for fd, event in events:
if fd == server.fileno():
client, _ = server.accept()
epoll.register(client.fileno(), select.EPOLLIN)
elif event & select.EPOLLIN:
data = client.recv(1024)
if not data:
epoll.unregister(fd)
client.close()
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы