@Sushkov
">alert("yohoho")

Что такое select?

Наткнулся на select в Python но информации мало про то что это такое. Я так понял это что то связанное с сокетами. Кто-нибудь расскажите, что это вообще такое?
  • Вопрос задан
  • 3774 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Представьте себе, что вы пишите web сервер. И к нашему серверу подключено 100 юзеров. И это, к примеру, чатик.

Так вот, наши юзеры - это живые люди, и они не могут физически загрузить весь канал информацией, а значит, что каждое соединение с пользователем большую часть времени.... будет просто висеть.

Предположим что у нас есть массив дескрипторов сокетов (или просто массив сокетов для упрощения) и мы тупо в бесконечном цикле обходим каждый и спрашиваем "есть че? нет? Ну ладно, следующий". В этой ситуации у нас 90% времени цикл будет пускаться в холостую и просто бернить процессорное время. А этим процессорным временем мог между прочим воспользоваться другой процесс, который тоже что-то важное делает.

Так вот, вместо того что бы бернить попросту процессорное время, мы можем загнать массив дескрипторов в функцию select, и она предоставит нам список сокетов, в которых мы можем отправлять данные, в которых есть что-то новенькое для чтения, и те, в которых произошли ошибки.

Более того, эта функция ничто иное как просто системный вызов. Она реализована не в python даже а в операционной системе, а вы просто работаете с оберткой. И если мы делали все тупым перебором, то в современных операционках за это отвечают весьма хитрые и оптимизированные алгоритмы.

Ну короч как-то так. Если вам хочется больше информации, не привязывайтесь к python, эта штука есть в любом языке программирования и работает одинаково. Так же помимо select есть еще poll и epoll.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы